|
本帖最后由 conini 于 2024-1-28 11:20 编辑
- #!/bin/sh
- #cloudflare API
- TARGET_RECORD="abc.example.xyz"
- ZONE_ID="AAAAAAAAAAAAA"
- RECORD_ID="BBBBBBBBBBBBBBBBBBBBB"
- API_TOKEN="_-CCCCCC-DDDDDDDDDDDDDDD"
- # 获取当前的外部 IPv4 地址
- IP4=$(curl -s ip.sb -4)
- [ -z "$IP4" ] && exit
- # 获取当前 DNS 记录的 IPv4 地址
- CURRENT_IP4=$(dig +short A $TARGET_RECORD @1.1.1.1 | tail -n1)
- # 调试输出
- echo "$(date) - 当前 IPv4 地址: $IP4"
- echo "$(date) - 当前记录的 IPv4 地址: $CURRENT_IP4"
- # 检查是否需要更新 IP 地址
- if [ "$IP4" = "$CURRENT_IP4" ]; then
- echo "$(date) - IPv4 地址已经是最新的。无需更新。"
- else
- #重启 gost
- #service gost restart
- # IP 地址已经改变,发送 API 请求来更新记录
- echo "$(date) - 当前 IPv4 地址: $IP4 正在等待变更。" >> /log/ipv4_change
- echo "$(date) - 当前记录的 IPv4 地址: $CURRENT_IP4 正在等待变更。" >> /log/ipv4_change
- echo "$(date) - 新 IP 地址为 $IP4,正在发送 API 请求以更改 IP 地址" >> /log/ipv4_change
- # 发送 API 请求以更新 DNS 记录
- RESPONSE=$(curl -s --request PUT --url "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
- -H "Authorization: Bearer $API_TOKEN" \
- -H "Content-Type: application/json" \
- --data '{
- "content": "'"$IP4"'",
- "name": "'"$TARGET_RECORD"'",
- "proxied": false,
- "type": "A",
- "ttl": 60
- }')
- # 解析 API 响应,检查更新是否成功
- SUCCESS=$(echo "$RESPONSE" | jq -r '.success')
- if [ "$SUCCESS" = "true" ]; then
- echo "$(date) - IPv4 地址已成功更新。" >> /log/ipv4_change
- # 更新 CURRENT_IP4
- CURRENT_IP4=$IP4
- else
- echo "$(date) - IPv4 地址更新失败。" >> /log/ipv4_change
- fi
- fi
复制代码
|
|