Cloudflare
使用 cloudflare API 直接更新 DNS 记录。需要安装 curl 和 jsonfilter。
#!/bin/sh
wanip_v4=`ubus call network.interface.wan status | grep \"address\" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'`
record_name='abc.example.com'
zoneid='ffffff'
cftoken='fffffffffffff'
zoneinfo=`curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records?name=$record_name&type=A" \
-H "Authorization: Bearer $cftoken" \
-H "Content-Type:application/json"`
recordid=`jsonfilter -s $zoneinfo -e '$.result[0].id'`
result_cf=`curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records/$recordid" \
-H "Authorization: Bearer $cftoken" \
-H "Content-Type: application/json" \
--data "{\"type\":\"A\",\"name\":\"$record_name\",\"content\": \"$wanip_v4\", \"ttl\":1,\"proxied\":false}"`
echo $result_cf
注意:
- 在 Cloudflare Dashboard - My Profile - API tokens 里申请一个API Token,权限需要Zone->Zone以及Zone->DNS的Edit权限。
- 在 Cloudflare Dashboardzone - Select Domain - Overview 里查看域名的 zone id。
- 需要先在 Cloudflare 里创建一个对应域名的 A 记录。
- 上面脚本里的 IPV4 获取方式仅适用于 OpenWrt。其他 Linux 可以尝试通用的获取网卡 IP 方式:
ip addr | grep eth0 | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1
。
ChangeIp.com
更新 IP:
curl -k "https://nic.ChangeIP.com/nic/update?u=user@example.com&p=password&ip=1.2.3.4&hostname=domain.dynamic-dns.net"
- ip 可选,默认自动检测。
dynu.com
更新 IP:
curl -k --user user:pass "https://api.dynu.com/nic/update?hostname=userdomain.dynu.com&myip=${IP}"
- myip 可选,默认自动检测。