Skip to content

Instantly share code, notes, and snippets.

@WayneGongCN
Last active June 10, 2019 09:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save WayneGongCN/6349d420789bb70aaebc7ce7eb1daccf to your computer and use it in GitHub Desktop.
Save WayneGongCN/6349d420789bb70aaebc7ce7eb1daccf to your computer and use it in GitHub Desktop.
Cloudflare DDNS shell script
#!/bin/sh
EMAIL=
CF_API_KEY=
CF_ZONE_ID=
CF_DNS_ID=
DNS_RECORD=
RECORD_TYPE=AAAA
ROUTER_NETWORK_DEVICE=
# 获取当前 DNS 记录
resolving_ip=$(curl -k -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_DNS_ID}" -H "X-Auth-Email:${EMAIL}" -H "X-Auth-Key:${CF_API_KEY}" -H "Content-Type: application/json" | awk -F '"' '{print $18}')
# 获取本机 ipv6 地址
current_ip=$(ip -o -6 addr list $ROUTER_NETWORK_DEVICE | awk '{print $4}' | cut -d/ -f1 | head -n 1)
echo "当前解析 IP: $resolving_ip"
echo "当前本机 IP: $current_ip"
# 没有变化
if [ $resolving_ip = $current_ip ];
then
echo "IP 未变化"
# 修改 DNS 记录
else
echo "更新解析记录"
curl -k -X PUT "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_DNS_ID}" -H "X-Auth-Email:${EMAIL}" -H "X-Auth-Key:${CF_API_KEY}" -H "Content-Type: application/json" --data '{"type":"'$RECORD_TYPE'","name":"'$DNS_RECORD'","content":"'$current_ip'"}'
fi
echo " "
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment