openwrt使用godaddy的api实现动态域名解析

内容转自:分享一个通用的godaddy_DDNS_shell脚本 – OPENWRT专版 – 恩山无线论坛 – Powered by Discuz!本脚本针对ipv6,v4也支持,只需在gdip的解析步骤稍作修改即可。废话不多说,直接开搞。一、拥有一个godaddy注册的域名,至于为什么选择godaddy除了你懂的原因,还 …恩山无线论坛https://www.right.com.cn/forum/thread-1317904-1-1.html

先进入godaddy的nds解析页面,新建一条A条目用于登入你的主机;

再进入developer.godaddy.com/keys 创建key和Secret并记录下来,注意,Environment需要选择“Production”;openwrt使用godaddy的api实现动态域名解析插图1

然后编辑一个xxx.sh文件,内容如下:

#!/bin/sh #这里是你购买的域名 mydomain="domain.xyz" #这里是dns配置中的名称 myhostname="router" #这里key和Secret之间注意有个冒号 gdapikey="你的key:你的Secret" logdest="local7.info" #另外注意,我这里的ipv4地址,所以使用的是A类型解析,如果是ipv6那么下面所有的A需改为AAAA #这里的地址也是为ipv4服务,ipv4地址为https://api.ipify.org, #ipv6为myip=`curl -6 "https://api6.ipify.org"` #也可自行使用别的地址 myip=`curl -s "https://api.ipify.org"` #从ip服务器获取ip # myip=`ip route show | grep pppoe-wan | awk 'NR==2 {print $9}'` #从本地获取pppoe-wan口的ip dnsdata=`curl -s -X GET -H "Authorization: sso-key ${gdapikey}" "https://api.godaddy.com/v1/domains/${mydomain}/records/A/${myhostname}"` #这里最后的2-9是针对性取得ipv6的字符,dnsdata中的返回字符串是一个json格式,需对齐解析。 # gdip=`echo $dnsdata | cut -d ',' -f 1 | tr -d '"' | cut -d ":" -f 2-9` #ipv6 gdip=`echo $dnsdata | cut -d ',' -f 1 | tr -d '"' | cut -d ":" -f 2` #ipv4 echo "`date '+%Y-%m-%d %H:%M:%S'` - Current External IP is $myip, GoDaddy DNS IP is $gdip" if [ "$gdip" != "$myip" -a "$myip" != "" ]; then echo "IP has changed!! Updating on GoDaddy" curl -s -X PUT "https://api.godaddy.com/v1/domains/${mydomain}/records/A/${myhostname}" -H "Authorization: sso-key ${gdapikey}" -H "Content-Type: application/json" -d "[{\"data\": \"${myip}\"}]" logger -p $logdest "Changed IP on ${hostname}.${mydomain} from ${gdip} to ${myip}" fi 

如果openwrt中设置了科学上网,用curl获得的ip地址可能会是外网的地址,那么myip的获取可以改用ip route show的方式,首先在命令行输入ip route show,观察打印出来的信息,并尝试最终输出实际的ip地址,本人的ip采集自wan口,关键词是pppoe-wan,所以可用如下命令实现ip的采集;

ip route show | grep pppoe-wan | awk 'NR==2 {print $9}'

注意,

grep pppoe-wan #用于打印pppoe-wan的信息;

awk #用于处理grep pppoe-wan的文本信息,NR==2意思是指定第二行,print $9的意思是指定第九列;

{print $9} #打印第九个字段;

最后把这个xxx.sh文件放入系统的定时任务里,比如半小时一次

编辑crontab,如,把脚本保存在/root/ddns.sh中,在命令行输入如下命令:

crontab -e

再输入,当前编辑环境实为vi,crontab的命令格式为‘分 时 天 月 周 usercommand’:

30 * * * * /root/ddns.sh

再输入crontab -l查看已有的定时任务;

另外也可再加入开机执行该脚本,可同样写入crontab中

crontab -e

@reboot sleep 120 ; /root/ddns.sh

其中sleep 120表示开机后等待120秒执行。

如果还想再生成日志,可以将crontab命令改成

@reboot sleep 120 ; /root/ddns.sh >> /root/ddns.log

30 * * * * /root/ddns.sh >> /root/ddns.log

注意:@reboot sleep 120 在openwrt下调试未成功

原文链接:https://blog.csdn.net/menglongfc/article/details/120671826?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168449620216800197011530%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=168449620216800197011530&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-10-120671826-null-null.blog_rank_default&utm_term=NAS%E3%80%81%E7%BE%A4%E6%99%96%E3%80%81%E9%98%BF%E9%87%8C%E4%BA%91%E3%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E3%80%81%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E3%80%81ipv6%E3%80%81ddns%E3%80%81%E8%BD%BB%E9%87%8F%E7%BA%A7%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E9%93%81%E5%A8%81%E9%A9%AC%E3%80%81%E5%A8%81%E8%81%94%E9%80%9A%E3%80%81DSM%E3%80%81DSM6.0%E3%80%81%E7%BE%A4%E6%99%96nas%E3%80%81%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85%E3%80%81%E9%BB%91%E7%BE%A4%E6%99%96%E3%80%81docker%E3%80%81%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E3%80%81%E5%9F%9F%E5%90%8D%E6%B3%A8%E5%86%8C%E3%80%81%E5%AE%9D%E5%A1%94%E3%80%81%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E3%80%81nginx%E3%80%81frp%E3%80%81%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享