Cloudflare的API IPv6DDNS
获取Record_ID
vi get_Record_ID.sh
,按I键进入编辑模式,粘贴以下内容,修改其中的信息为你自己的,然后按Esc键,输入:wq保存并退出..
# 帐号邮箱
Auth_Email="uo****@163.com"
# 是API_Key,相当于密码,不是API_token
API_Key="2939ac************4bfe50557b45d421c36"
# 域名ID,顶级域名的ID
Zone_ID="98080********b9f21e63bc33aef06be"
# 记录类型 IPv4是A IPv6是AAAA
Record_Type="AAAA"
# 完整的二级域名,例如 tieba.baidu.com
Domain_FullName="ha***s.20**02.xyz"
curl -X GET "https://api.cloudflare.com/client/v4/zones/${Zone_ID}/dns_records?type=${Record_Type}&name=${Domain_FullName}&page=1&per_page=100&order=type&direction=desc&match=all" \
-H "X-Auth-Email: ${Auth_Email}" \
-H "X-Auth-Key: ${API_Key}" \
-H "Content-Type: application/json"
chmod +x get_Record_ID.sh
,授权脚本执行权限
./get_Record_ID.sh
,执行脚本获取Record_ID,其中ID就是Record_ID
提交IPv6DDNS
vi ipv6ddns.cloudflare.sh
,按I键进入编辑模式,粘贴以下内容,修改其中的信息为你自己的,然后按Esc键,输入:wq保存并退出
# 帐号邮箱
Auth_Email="uo****@163.com"
# 是API_Key,相当于密码,不是API_token
API_Key="2939a********596394bfe50557b45d421c36"
# 域名ID,顶级域名的ID
Zone_ID="98080********b9f21e63bc33aef06be"
# 记录类型 IPv4是A IPv6是AAAA
Record_Type="AAAA"
# 记录ID 每一条记录都有一个ID,需要用上面API获取
Record_ID="08f24********097e467f478e038aca6"
# 记录的名称,不带顶级域名 例如 blog
Record_Name="ha***s"
# 实际的IPv6公网
old_IPv6=`cat old_ipv6.txt`
IPv6=`curl 6.ipw.cn`
echo "当前时间: "`date "+%F %T"`
echo "Auth_Email: "${Auth_Email}
echo "API_Key: "${API_Key}
echo "Zone_ID: "${Zone_ID}
echo "Record_Type: "${Record_Type}
echo "Record_ID: "${Record_ID}
echo "Record_Name: "${Record_Name}
echo "上次的IPv6公网: "${old_IPv6}
echo "当前的IPv6公网: "${IPv6}
update_Record(){
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/${Zone_ID}/dns_records/${Record_ID}" -H "X-Auth-Email: ${Auth_Email}" -H "X-Auth-Key: ${API_Key}" -H "Content-Type: application/json" --data "{\"id\":\"${Zone_ID}\",\"type\":\"${Record_Type}\",\"name\":\"${Record_Name}\",\"content\":\"${IPv6}\"}"
}
if [ ${IPv6} = ${old_IPv6} ]; then
echo "IPv6和上次相同,不提交"
#如果需要每次都强制提交,那么取消下面这行注释
#`update_Record`
else
echo "IPv6和上次不同,需要提交"
`update_Record`
fi
#最后要把当前的IPv6记录到文件,供下次对比
echo ${IPv6} > old_ipv6.txt
#把每次的IPv6都记录下来,供查询多久变动一次IPv6
echo `date "+%F %T"`" "${IPv6} >> ipv6ddns.log
chmod +x ipv6ddns.cloudflare.sh
,授权脚本执行权限
./ipv6ddns.cloudflare.sh
,执行脚本提交动态域名解析,第一次提交时显示一个错误,需要一元表达式,可以无视,第二次就不会出现了,这是因为第一次执行,没有old_ipv6.txt这个文件导致的
设置定时任务
#如果没有安装,那么就安装一下 apt install cron,第一次进入要选择默认编辑器
crontab -e
#按I键进入编辑模式,粘贴以下内容,然后按Esc键,输入:wq保存并退出
#新起一行,写入以下内容,
*/5 * * * * /root/ipv6ddns.cloudflare.sh #这里填入你脚本的实际位置 */5表示每5分钟执行一次
#此时就已经定期执行DDNS了