主页 > 原创 > 用于ddwrt或openwrt的cloudxns动态域名更新shell脚本

用于ddwrt或openwrt的cloudxns动态域名更新shell脚本

域名解析服务由dnspod切换到了cloudxns,于是重新写了一个动态域名更新的脚本用于路由器更新域名保定的ip地址。

脚本文件路径 https://github.com/xdtianyu/scripts/tree/master/ddns

下载shell脚本
在路由控制台,下载脚本及配置文件

ddwrt系统注意先切换到一个重启后不会丢失文件的目录,如 /jffs 或 /opt

wget https://raw.githubusercontent.com/xdtianyu/scripts/master/ddns/cloudxns.sh
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/ddns/cloudxns.conf
chmod +x cloudxns.sh

配置
修改 cloudxns.conf 文件

API_KEY="YOUR_API_KEY"
SECRET_KEY="YOUR_SECRET_KEY"
DOMAIN="example.com"
HOST="ddns"
LAST_IP_FILE="/tmp/.LAST_IP"

修改 API_KEY SECRET_KEY DOMAIN HOST ,HOST为你的子域名,如 ddns.example.com 中的 ddns,需要在cloudxns里已经有记录。这个脚本做的是更新操作。

测试

/path/to/cloudxns.sh /path/to/cloudxns.conf

查看结果输出 success 就表示更新成功,这个脚本在成功后会记录这次更新的ip地址,只有在ip发生变化后会再次运行更新

添加到 cron 定时任务

注意修改路径为你自己的路径

openwrt 系统运行

/etc/init.d/cron enable                                                                                                      
crontab -e
# 添加
*/3 * * * * /root/ddns/cloudxns.sh /root/ddns/cloudxns.conf >> /root/ddns/cloudxns.log

ddwrt在网页控制台添加

管理->cron->勾选[启用],Cron 附加任务 在输入框中添加

*/3 * * * * root /opt/ddns/cloudxns.sh /opt/ddns/cloudxns.conf >> /opt/ddns/cloudxns.log

可以删除 /tmp/.LAST_IP 文件等待三分钟检查log是不是成功运行。

Tags: cloudxns ddns ddwrt openwrt shell 动态域名

评论:10

  1. 飞翔 回复
    2016 年 3 月 17 日 于 上午 11:27

    一直用你的脚本,最近发现dnspod不是很稳定,切换到cloudxns,但是在DDwrt 6300v2下面,发现有2个域名不更新,我用多个 conf 来更新域名.咨询了 cloudxns 说没有对API更新的次数做限制.最后查看你的脚本,发现用到一个ip.xdty.org来验证当前IP和lastIP的,我想是否可以根据cloudxns 返回的IP 来确定?

    • tianyu 回复
      2016 年 3 月 18 日 于 下午 5:47

      通过 ip.xdty.org 获取当前的 ip 有什么问题吗?可以考虑改成 cloudxns 返回的 ip 或者通过国内其他类似的获取公网 ip 的服务替代。

  2. 摩尔 回复
    2016 年 9 月 7 日 于 上午 10:45

    ddwrt无法wget到https的文件,我自己保存的代码
    运行的时候提示:
    sh: eval: line 1: /tmp/cloudxns.sh: not found
    请问是怎么回事

  3. 摩尔 回复
    2016 年 9 月 8 日 于 上午 8:30

    搞定了,发现了个新的问题,ip.xdty.org是国外IP,路由器开了SS后在该网页获得的IP是SS的IP而不是WAN口IP,经研究,直接把IP换成$(ip -4 addr show dev ppp0 | awk ‘/inet / {print $2}’ | cut -d/ -f1),读取WAN口IP,简单又准确。

  4. 冷曦 回复
    2016 年 11 月 12 日 于 下午 6:26

    root@LEDE-X64:~# ./cloudxns.sh cloudxns.conf
    DOMAIN ID: 139241
    RECORD ID:
    {“error”:”Invalid API request, may be your URL path error, please check your URL, and then try again.”}
    Sat Nov 12 18:24:06 CST 2016 — Update failed

    你好 这个要怎么解决呢?

  5. kittyzero 回复
    2016 年 12 月 9 日 于 下午 3:35

    你好,有阿里云dns的脚本不?

  6. gebi 回复
    2017 年 3 月 3 日 于 下午 12:54

    root@gebipu:~/cloudxns# /root/cloudxns/cloudxns.sh /root/cloudxns/cloudxns.conf
    DOMAIN ID: 365305
    RECORD ID: 2591771
    2591375
    2591375
    其中有三个record ID 无法更新成功,看后台是因为@ 后面有一个A记录解析和两个XM.
    请问要如果排除掉XM记录的 ID。

  7. gebi 回复
    2017 年 3 月 3 日 于 下午 5:24

    发现当域名有三个@设置主域名(其中一个记录类型一个为A,两个为XM)时。 在DDNS更新过程中,有三个RECORD ID,导致更新错误。 请问要如何排除两个XM的RECORD ID,正常更新,谢谢。

  8. William King 回复
    2018 年 9 月 29 日 于 下午 11:26

    是否支持多域名?

发表评论

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