er-x 阿里云DDNS 自动更新脚本

阿里云DDNS 域名极其用户参数请自行解决
aliddns_ak=QWERTYUIOL #ak从自己的阿里云账户获取
aliddns_sk=tLVyFGHJKQ #sk从自己的阿里云账户获取
aliddns_name=xxx #要就解析的二级域名
aliddns_domain=xxxxx.xxx #就解析的域名
aliddns_type=A #记录类型A ipv4,AAAA ipv6
aliddns_curl=“curl -s whatismyip.akamai.com#查询自己域名的脚本 curl -s whatismyip.akamai.com 查ipv4 , curl -s ipv6.whatismyip.akamai.com 查ipv6


使用方法:
1.修改脚本里相应的参数保存
2.传到er-x的任意目录爱传哪传哪 例如我传到了 /home/admin/aliddns/
3.crontab -e 添加定时任务:

          • sh /home/admin/aliddns/aliddns_er-x.sh >> /home/admin/aliddns/aliddns_er-x.log
            每分钟执行一次
            脚本见附件

aliddns_erx.rar (1.42 KB)

2赞

ubnt有你更精彩

这个真不错,试下子

装了$$,获取了$$的IP。。。怎么办?

亲测可行,但请注意crontab 命令里脚本名跟附件的有差异

小白学习了,不过我觉得每分钟都运行不太妥当,将第一个改成/5,就是每五分钟运行这样会不会稍微好一些呢

放上这个定时设计的语法给大家参考
前面共有五位,f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其余类推

我的方法是换一个网址 aliddns_curl=“curl -s www.ipip.net/”,即使ss得到国外的ip,仍然可以正确解析本地ip成功

重启路由后,阿里云的解析ip还是原来的,没有变化?总不能每次手动修改吧,如何破解?谢谢

可以改一下,放到 /config/scripts/ppp/ip-up.d/ 目录下,pppoe重拨时自动执行,通过 $PPP_LOCAL 可以获取到此次拨号的外网IP地址

留个爪子,有空试试:lol

感谢,这个方法不错。

好东西,这个东西完美解决我的需求,谢谢 LZ

签名不通过
Specified signature is not matched with our calculation.

mostone 发表于 2018-7-6 12:11
可以改一下,放到 /config/scripts/ppp/ip-up.d/ 目录下,pppoe重拨时自动执行,通过 $PPP_LOCAL 可以获取 …

小白请教一下,是直接传到那个目录就行?
通过 $PPP_LOCAL获取是什么意思?

放那目录就可以了,会被自动运行

由上级程序调用,会传过来 $PPP_LOCAL 环境变量

兄弟,”pppoe重拨时自动执行,通过 $PPP_LOCAL 可以获取到此次拨号的外网IP地址“这一句话
是不是意思可以把脚本里的 aliddns_curl=“curl -s whatismyip.akamai.com” 这一条修改成 aliddns_curl=$PPP_LOCAL。这样在pppoe重拨或者路由器重启时就可以调用$PPP_LOCAL这个变量的值(即外网IP地址)。并且不需要添加定时任务,因为外网IP变化时pppoe必然是因为pppoe重新拨号,而不需要每分钟执行脚本更新云解析IP。不知道我的理解对不对,请指点一下。
$PPP_LOCAL变量在pppoe拨号成功后就是空值了吗?我在CLI命令行下echo $PPP_LOCAL显示是空值。

小白求教,配置好aliddns_erx.sh后,再ubuntu中执行未能更新aliyun端的公网IP,请大神们看看是啥问题 。

aggressor@DESKTOP-B64HIA1:/mnt/c$ ./aliddns_erx.sh
curl_ip: 112.82.185.195 dns_ip:www.vnioz.com has address 121.231.130.74
dns_ip:121.231.130.74
./aliddns_erx.sh: 57: read: Illegal option -n
./aliddns_erx.sh: 57: read: Illegal option -n
./aliddns_erx.sh: 57: read: Illegal option -n
./aliddns_erx.sh: 57: read: Illegal option -n
./aliddns_erx.sh: 57: read: Illegal option -n
added record
aliddns_record_id null

是的,发生拨号就调用,不用定时。
这个变量,是上级拨号脚本传入的,你命令行下是看不到的。

这个地方获取的是IPv4还是IPv6啊?

直接在路由器上可以,可能是ubuntu缺少什么依赖吧。