开发背景:
公司有台嵌入式拨号上网设备,内置busybox和完整wget命令(支持https协议),但没有curl、python、ruby、php等扩展工具可用。网上现有基于DNSPod实现的Linux脚本无法在该设备上运行,于是写了个Shell版动态域名客户端(ddnspod),现在发布出来希望能给需要的朋友带来一些方便。
项目源码:
https://github.com/rehiy/dnspod-shell
DnsPod官方文档
https://support.dnspod.cn/Support/api
功能介绍:
- 优雅的函数封装,灵活的更新策略
- 基于DNSPod最新用户API实现动态域名客户端
- 支持基于系统计划任务实现更新,防止脚本意外终止
- 可运行于多数类unix系统中,包括部分嵌入式小型系统
- 依赖sed/wget/nslookup命令,wget也可使用curl替代
常见问题:
record line invailid 将脚本保存为utf-8格式即可
Record id invalid 检查账号权限、是否冲突等
我也一样是报错 get record info failed。
我也一样是报错 get record info failed。
经测试 a.abc.com 二级域名会出现 get record info failed abc.com 根域名不会
目前免费的DDNS 的TTL最低只能写到600秒,是不是这个原因导致报错 get record info failed。
可能和api变更有关系,你更新到最新的版本了么
是最新版的,
最近更新
2020/1/1
适配新版API(2019-11-26)
当wget不存在时,尝试使用curl提交
由于readlink不可靠,更改为手动设置路径
当无法从本地网卡获得外网ip时,尝试从外部api获取
上个月合并了一个pull,解决这个问题
因为ipv6有三个地址
(第一个)inet6 240e:000:000a:26c0::114 prefixlen 128 scopeid 0x0
(第二个)inet6 240e:000:000a:26c0:25dd:f3b1:7f79:d4d6 prefixlen 64 scopeid 0x0
(本地地址)inet6 fe80::ac5b:4331:5f5d:115b prefixlen 64 scopeid 0x20
shell会自动上传第一个v6地址,导致无法联通,如何修改为上传第二个v6地址呢
用 计算下长度,排除掉一个
arDdnsIds - {"status":{"code":"8","message":"\u57df\u540d\u4e0d\u6b63\u786e\uff0c\u8bf7\u8f93\u5165\u4e3b\u57df\u540d\uff0c\u5982 dnspod.cn","created_at":"2021-08-15 01:34:34"}}
大佬们,这是什么问题啊???
Domain Ids: arDdnsIds - {"status":{"code":"10","message":"\u8bb0\u5f55\u5217\u8868\u4e3a\u7a7a","created_at
解决了,是网卡选的不对。
//运行ifconfig,查看具有IPv6地址的网卡设备名,例如eth0等
//ddnspod.sh 69行,将 eth0 替换成本机的网卡设备名。确保单独运行该命令可以返回ipv6地址
好的
可能需要选择网卡
ddnspod.sh: line 14: arDdnsCheck: not found
这是未获取到我的域名吗?是因为dnspod的api使用https的原因吗?我该如何解决?
可能是缺少了函数文件,你把项目里的2个脚本放一起即可
昨天还可以用,今天出现了Host Ip: arWanIp4 - Can't get ip address,问下咋回事,我直接进入https://v4.myip.la等个几秒也能出ip地址,为啥报错了呢
脚本优先使用本地wan的ip,获取不到,才会从接口获取。可以更换一个你本地打开快一点的接口试试
我也是遇到同样的情况,换了其他接口也是一样,https://v4.myip.la我本地秒开,但是还是显示Host Ip: arWanIp4 – Can’t get ip address
我排查下看看