基于 DNSPod 开发文档写了个 DDNS 脚本

继上次写过一篇 Cloudflare DDNS 脚本的文章 之后,我便一直有写一个 DNSPod DDNS 脚本的想法。虽然 DNSPod 提供了一个 DDNS 的 API 接口,但是并不是很好用,比如由于其 API 不是双栈的导致无法进行 IPv6 的 DDNS,这就很让人不爽(

于是,这个脚本应运而生,用以解决 DNSPod 在 IPv6 环境下无法 DDNS 的问题

按照惯例,先来推广一下我这个项目的仓库地址,虽然不知道会不会有大佬来提 PR

用法

请提前装好必备的环境,例如 BASH cURL

下载

通过 GitHub 下载

1
curl https://raw.githubusercontent.com/Leao9203/dnspod-api-ddns/main/dnspod-ddns.sh > /usr/local/bin/dnspod-ddns.sh && chmod +x /usr/local/bin/dnspod-ddns.sh

通过 Gitee 下载(国内体验较好)

1
curl https://gitee.com/Leao9203/dnspod-api-ddns/raw/main/dnspod-ddns.sh > /usr/local/bin/dnspod-ddns.sh && chmod +x /usr/local/bin/dnspod-ddns.sh

通过 jsDelivr 下载

1
curl https://cdn.jsdelivr.net/gh/Leao9203/dnspod-api-ddns@main/dnspod-ddns.sh > /usr/local/bin/dnspod-ddns.sh && chmod +x /usr/local/bin/dnspod-ddns.sh

参数

1
2
3
4
5
6
7
8
dnspod-ddns.sh
-i # DNSPod Token 的 ID
-k # DNSPod Token ID 所对应的 Token
-d # DDNS 的主域名,例如 ascn.site
-r # DDNS 的域名记录,例如 blog
-t # DDNS 的类型,允许的值为 A 或者 AAAA
-a # 检测出口 IP 的 API,可选输入,例如 ip.sb,或者我所搭建的 ip.leao9203.xyz,建议优先自己搭建一个
-f # 是否忽略 IP 变化,强制更新。如果启用,请设置为 true

顺带一提,脚本在初次运行时会自动在当前用户的目录下的 .config/dnspod-ddns 生成一个保存 IP 的文件,来判断 IP 是否更新。如果目录不存在会自动创建。

设置 crontab 自动更新

1
*/1 * * * * dnspod-ddns.sh 附加参数

频率为每分钟检查一次 IP 是否更新,如果觉得太频繁可以把 1 改为其他数值(小于 60 的整数)

其他用法

除了通过附加参数来使用,也可以直接修改脚本内的一些变量来使用,脚本内已经加了注解,修改第 4 行至第 22 行的变量内容即可。

创建 DNSPod 的 Token 教程

在看了上面的用法之后,可能有部分人士仍对用法有一些疑惑,这里进行一次演示

打开 DNSPod 的 Token 管理页面

https://console.dnspod.cn/account/token/token

点击 创建密钥,并进行相应的身份验证

然后给新创建的密钥取一个响当当的名字

将新创建的 ID 和 Token 值保存下来,并勾选 温馨提示 的内容

之后,按照上面的用法使用即可

天哪,我的老伙计,我都说的这么详细了,我敢打赌,你一定会用的,我向圣母玛利亚保证。如果你还是不会,我保证,我一定用皮靴狠狠地踢你的屁股

LICENSE相关

为了爱与和平,为了便于本脚本的传播及造福群众,脚本的版权 LICENSE 设置为了非常宽松的 MIT 许可证,希望能给各位有需要的小伙伴做出一些绵薄的贡献吧

后记

说起来,我要写一个 DNSPod 的 DDNS 脚本的 Flag 都已经立下了快一年了,现在才写出来,真的笑嘻辽

GitHub 的截图

咕王的实力.jpg

下一步的计划应该是给阿里云的 DNS 写一个 DDNS 的 Shell 脚本,前提是如果没别的大佬写过的话(

参考