在synology或linux上使用shell脚本实现基于dynv6的免费DDNS

在synology或linux上使用shell脚本实现基于dynv6的免费DDNS一、到dynv6注册账号并申请一个Zone。在Zone的Instruction选项卡你可以看到你的Password,这个也就是后面会提到的Token。二、在Synology里通过CLI建立一个空的文件夹,使用VI或者VIM编辑一个.sh文件。其内容如下:#!/bin/bash#设置LOG文件的位

大家好,欢迎来到IT知识分享网。在synology或linux上使用shell脚本实现基于dynv6的免费DDNS

一、到dynv6注册账号并申请一个Zone。在Zone的Instruction选项卡你可以看到你的Password,这个也就是后面会提到的Token。

 

二、在Synology里通过CLI建立一个空的文件夹,使用VI或者VIM编辑一个.sh文件。其内容如下:

#!/bin/bash
#设置LOG文件的位置和文件名
Log_File=”/root/dynv6/log.txt”
#
#设置用于查询DNS的域名服务器,建议使用谷歌的8.8.8.8或者8.8.4.4
#DNS_Server=”8.8.4.4″
DNS_Server=”8.8.4.4″
#
#设置你在Dynv6的Token和域名
Token=”JyhbKGbt你的TokenBvWaFcqYT”
Hostname=”yourname.dynv6.net”
#
#通过第三方服务查询当前设备的出口IP地址
Current_IPv4=$(curl –silent “https://api.ipify.org”)
#echo “Current IP is ${Current_IPv4}”
#
#通过前述设置的DNS服务器查询你的域名的IP地址
DNS_IPv4=$(nslookup ${Hostname} ${DNS_Server}|grep -E -o “[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}” |grep -v ${DNS_Server})
#DNS_IPv4=”99.99.99.99″
#echo “Current DNS IP is ${DNS_IPv4}”
#
#如果域名查询到的IP与当前出口IP不一致,则执行DNS IP更新操作
if [ “${DNS_IPv4}” != “${Current_IPv4}” ] && [ “${DNS_IPv4}” != “” ] && [ “${Current_IPv4}” != “” ] ; then
#通过Dynv6的接口更新DNS IP
curl –silent “http://dynv6.com/api/update?hostname=${Hostname}&token=${Token}&ipv4=${Current_IPv4}”
#将更新记录写到Log文件中
echo -e “\033[31m$(date -Iseconds):DNS IP update:${DNS_IPv4}==>${Current_IPv4}\033[0m” >>${Log_File}
elif [ “${DNS_IPv4}” == “” ] ; then
echo -e “\033[31m$(date -Iseconds):DNS lookingup failed.\033[0m” >>${Log_File}
elif [ “${Current_IPv4}” == “” ] ; then
echo -e “\033[31m$(date -Iseconds):Current IP checking failed.\033[0m” >>${Log_File}
else
echo -e “\033[34m$(date -Iseconds):\033[32mDNS IP ${DNS_IPv4}=${Current_IPv4} Port IP\033[0m” >>${Log_File}
fi

三、增加运行权限

chmod +744 xxx.sh

四、登录synology管理界面增加定期执行项目

bash …/xxx.sh

如果是Linux则使用crontab -e 增加自动执行项目。crontab的具体使用方法可以自行搜索。

五、需要注意一点,如果使用Windows平台编辑好文件再上传到Linux,可能会出现编码上的问题导致脚本运行异常。此时可以在VI界面内使用

:set ff=unix

并保存,重新编辑来解决。

 

六、其他情况

由于使用的都是通用工具或者命令,所以这个方法几乎适用于所有linux平台。同时,对脚本进行简单修改即可适用于IPv6的使用环境,由于作者没有IPv6的需求所以未实现此部分的脚本。其中关键脚本如下:

获得网卡上的IPv6地址:

ifconfig -a |grep -E -o “([a-f,A-F,0-9]{0,4}:){6,7}([a-f,A-F,0-9]{0,4})”

通过第三方API获得IPv6地址:

curl “https://api64.ipify.org”

更新:

http://dynv6.com/api/update?hostname=<domain>&token=<username>&ipv6=<ip6addr>&ipv6prefix=<ip6lanprefix>

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/27861.html

(0)
上一篇 2023-11-30 17:15
下一篇 2023-12-03 22:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信