Ddns Cloudflare 脚本

#!/bin/bash

# 配置部分,请根据实际情况修改
API_KEY="你的Cloudflare API密钥"
EMAIL="你的Cloudflare邮箱"
ZONE_ID="你的域名对应的Zone ID"
RECORD_NAME="要更新的记录名称,例如@或www"
RECORD_TYPE="A"  # 或AAAA,根据需要修改
INTERVAL="3"  # 定时任务更新间隔,单位分

# 获取当前主机IP
IPV4=$(curl -4 ip.gs)
IPV6=$(curl -6 ip.gs)

# 更新Cloudflare DNS记录
function update_record() {
  local ip=$1
  local record_type=$2
  curl -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"type\": \"$record_type\", \"name\": \"$RECORD_NAME\", \"content\": \"$ip\"}" > /dev/null 2>&1
}

# 获取记录ID
RECORD_ID=$(curl -sX GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?name=$RECORD_NAME&type=$RECORD_TYPE" \
  -H "X-Auth-Email: $EMAIL" \
  -H "X-Auth-Key: $API_KEY" | jq -r '.result[0].id')

# 更新IPv4记录
update_record "$IPV4" "A"

# 更新IPv6记录
update_record "$IPV6" "AAAA"

# 定时任务设置, /opt/ddns.sh 脚本位置
echo "*/$INTERVAL * * * * root /opt/ddns.sh" | crontab -

发表评论

邮箱地址不会被公开。 必填项已用*标注