配置设备:
斐讯n1盒子 f大openwrt版本 f大openwrt
参考链接:
代码如下
#!/bin/bash
auth_email="youemail@mail.com"
auth_key="*********"
record_name="example.com"
# ipv6 为 AAAA记录 ,ipv4 为 A 记录
record_type="AAAA"
# ip 的获取要根据实际情况修改
ip=$(ifconfig br-lan |grep inet6|grep Global|grep -v /60|awk '{print $3}'|awk -F/ '{print $1}')
ip_file="ip.txt"
# 判断 IP 是否变化
old_ip=$(cat $ip_file)
if [ "$ip" == "$old_ip" ]; then
echo "IP has not changed."
exit 0
fi
zone_identifier=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" | awk -F , '{print $1}' | awk -F \" '{print $6}' )
record_identifier=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records?name=$record_name&type=$record_type" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" | grep \"id\" | awk -F \" '{print $4}')
echo "$zone_identifier"
echo "$record_identifier"
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records/$record_identifier" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" --data "{\"id\":\"$zone_identifier\",\"type\":\"$record_type\",\"name\":\"$record_name\",\"content\":\"$ip\"}"
# 保存变化后的ip
echo "$ip"> $ip_file
部分shell脚本说明
ifconfig -a br-lan //获取br-lan接口的ipv6地址
awk '{print $3}' //grep Global 获取带有Global字样的行
grep -v /60 //删除带有 /60 的行,即本地ipv6地址
awk '{print $3}' // 使用空格或tab分割字符串并取得分割后的第三个部分
awk -F/ '{print $1}' // 使用 / 分割字符串获取第一部分
修改前错误出现错误:API UPDATE FAILED. DUMPING RESULTS
if [ -f $id_file ] && [ $(wc -l $id_file | cut -d " " -f 1) == 2 ]; then
zone_identifier=$(head -1 $id_file)
record_identifier=$(tail -1 $id_file)
else
#若不删除上面部分会出现以下错误提示,原因未知
API UPDATE FAILED. DUMPING RESULTS:
{"success":false,"errors":[{"code":7003,"message":"Could not route to \/zones\/dns_records, perhaps your object identifier is invalid?"},{"code":"7000","message":"No route for that URI"}],"messages":[],"result":null}
网友评论