找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 3910|回复: 12

分享一个通用的godaddy_DDNS_shell脚本

[复制链接]
发表于 2019-11-1 16:30 | 显示全部楼层 |阅读模式


本脚本针对ipv6,v4也支持,只需在gdip的解析步骤稍作修改即可。废话不多说,直接开搞。

一、拥有一个godaddy注册的域名,至于为什么选择godaddy除了你懂的原因,还有可用支付宝支付。
二、进入管理页面的DNS配置,如下图:

注意其中的AAAA记录,如果是ipv4请配置A记录。
三、进入developer.godaddy.com/keys 创建key和Secret并记录下来。
四、创建一个shell脚本,内容是:
#!/bin/bash
#这里是你购买的域名
mydomain="domain.xyz"
#这里是dns配置中的名称
myhostname="router"
#这里key和Secret之间注意有个冒号
gdapikey="你的key:你的Secret"
logdest="local7.info"
#另外注意,我这里的ipv6地址,所以使用的是AAAA类型解析,如果是ipv4那么下面所有的AAAA需改为A

#这里的地址也是为ipv6服务,ipv4地址为https://api.ipify.org
myip=`curl -s "https://api6.ipify.org"`
dnsdata=`curl -s -X GET -H "Authorization: sso-key ${gdapikey}" "https://api.godaddy.com/v1/domains/${mydomain}/records/AAAA/${myhostname}"`
#这里最后的2-9是针对性取得ipv6的字符,dnsdata中的返回字符串是一个json格式,需对齐解析。
gdip=`echo $dnsdata | cut -d ',' -f 1 | tr -d '"' | cut -d ":" -f 2-9`
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/AAAA/${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


五、将脚本内的mydomain、myhostname、gdapikey替换为你的内容,然后在系统中设置为定时执行即可

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1恩山币 +1 收起 理由
輪*** + 1 观众老爷们,3楼有最新搅屎棍,欢迎任意取用!

查看全部评分

 楼主| 发表于 2019-11-1 16:34 | 显示全部楼层
ipv4版:

#!/bin/bash

mydomain="sos-obx.us"
myhostname="gateway"
gdapikey="api_key:key_secret"
logdest="local7.info"

myip=`curl -s "https://api.ipify.org"`
dnsdata=`curl -s -X GET -H "Authorization: sso-key ${gdapikey}" "https://api.godaddy.com/v1/domains/${mydomain}/records/A/${myhostname}"`
gdip=`echo $dnsdata | cut -d ',' -f 1 | tr -d '"' | cut -d ":" -f 2`
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
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2019-11-1 17:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2019-11-1 19:33 | 显示全部楼层
我这ipv6好像没用。。。有地址测试不通过说dns不支持
回复 支持 反对

使用道具 举报

发表于 2019-11-1 20:11 | 显示全部楼层
大佬  优秀
回复 支持 反对

使用道具 举报

发表于 2019-11-13 11:08 | 显示全部楼层
测试了解析不了,一直解析出来ipv4然后无法添加
回复 支持 反对

使用道具 举报

发表于 2019-11-13 11:38 | 显示全部楼层
测试楼主的代码有个问题,每次解析的本地ip为ipv4我更正了一下以后能正常ddns


#!/bin/bash

#这里是你购买的域名
mydomain="domain.xyz"
#这里是dns配置中的名称
myhostname="router"
#这里key和Secret之间注意有个冒号
gdapikey="你的key:你的Secret"
logdest="local7.info"
#另外注意,我这里的ipv6地址,所以使用的是AAAA类型解析,如果是ipv4那么下面所有的AAAA需改为A


#这里的地址也是为ipv6服务,ipv4地址为https://api.ipify.org
myip=`curl -6 "https://api6.ipify.org"`
#就是curl 用了-s命令更换成-6命令则默认获取ipv6地址
dnsdata=`curl -s -X GET -H "Authorization: sso-key ${gdapikey}" "https://api.godaddy.com/v1/domains/${mydomain}/records/AAAA/${myhostname}"`
#这里最后的2-9是针对性取得ipv6的字符,dnsdata中的返回字符串是一个json格式,需对齐解析。
gdip=`echo $dnsdata | cut -d ',' -f 1 | tr -d '"' | cut -d ":" -f 2-9`
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/AAAA/${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

点评

谢谢修复,可能和当地isp有关,我这里移动访问https://api6.ipify.org/就能直接得到v6.  详情 回复 发表于 2019-11-14 21:56
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-14 21:56 | 显示全部楼层
qq743204199 发表于 2019-11-13 11:38
测试楼主的代码有个问题,每次解析的本地ip为ipv4我更正了一下以后能正常ddns

谢谢修复,可能和当地isp有关,我这里移动访问https://api6.ipify.org/就能直接得到v6.
回复 支持 反对

使用道具 举报

发表于 2019-11-14 22:19 | 显示全部楼层
lbhqq 发表于 2019-11-14 21:56
谢谢修复,可能和当地isp有关,我这里移动访问https://api6.ipify.org/就能直接得到v6.

我这还一个问题。。。好像电信访问不了?

点评

访问不了godaddy还是ipify? 如果是后者的话可以替换成国内的。  详情 回复 发表于 2019-11-19 22:09
回复 支持 反对

使用道具 举报

发表于 2019-11-16 16:08 | 显示全部楼层
本帖最后由 adrian_xu 于 2019-11-16 16:09 编辑

我的k2p curl坏了用不了 修改了一下换成用wget的版本

#!/bin/bash

mydomain="sos-obx.us"
myhostname="gateway"
gdapikey="api_key:key_secret"
logdest="local7.info"

myip=`wget -q -O -  "http://api.ipify.org"`
dnsdata=`wget -q -O -  --no-check-certificate --header="Authorization: sso-key ${gdapikey}" "https://api.godaddy.com/v1/domains/${mydomain}/records/A/${myhostname}"`
echo "11  $dnsdata"
gdip=`echo $dnsdata | cut -d ',' -f 1 | tr -d '"' | cut -d ":" -f 2`
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"
  wget -q -O - --method="PUT" "https://api.godaddy.com/v1/domains/${mydomain}/records/A/${myhostname}" --header="Authorization: sso-key ${gdapikey}" --header="Content-Type: application/json" --body-data="[{\"data\": \"${myip}\"}]"  --no-check-certificate
  logger -p $logdest "Changed IP on ${hostname}.${mydomain} from ${gdip} to ${myip}"
fi



点评

wget: unrecognized option `--method=PUT'  详情 回复 发表于 2022-10-2 05:09
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-19 22:09 | 显示全部楼层
qq743204199 发表于 2019-11-14 22:19
我这还一个问题。。。好像电信访问不了?

访问不了godaddy还是ipify? 如果是后者的话可以替换成国内的。

点评

不太懂。。。。反正好像全国电信都没法访问。  详情 回复 发表于 2019-11-19 22:45
回复 支持 反对

使用道具 举报

发表于 2019-11-19 22:45 | 显示全部楼层
lbhqq 发表于 2019-11-19 22:09
访问不了godaddy还是ipify? 如果是后者的话可以替换成国内的。

不太懂。。。。反正好像全国电信都没法访问。
回复 支持 反对

使用道具 举报

发表于 2022-10-2 05:09 | 显示全部楼层
adrian_xu 发表于 2019-11-16 16:08
我的k2p curl坏了用不了 修改了一下换成用wget的版本

#!/bin/bash

wget: unrecognized option `--method=PUT'
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-6-3 01:08

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表