使用Cloudflare API自动更新DDNS
侧边栏壁纸
  • 累计撰写 26 篇文章
  • 累计收到 30 条评论

使用Cloudflare API自动更新DDNS

Gimo
2023-08-17 / 1 评论 / 357 阅读 / 正在检测是否收录...

通过Cloudflare的API很容易实现动态更新IP地址到域名里,可以完美的替代花生壳之类的DDNS,不用出一分钱,有一个域名即可操作。需要将你的域名托管在Cloudflare。

以下是一段实现自动更新IP到Cloudflare的bash脚本:


#!/bin/bash

# Cloudflare 相关信息
CF_API_KEY="2vTgV2ZuaGAesvUQ9DQmnWeQK"  # 你的 Cloudflare API 全局密钥
CF_EMAIL="[email protected]"            # 你的 Cloudflare 邮箱。
CF_ZONE_ID="ZmqyA2i2QP0uMFhF8f8kP6a3Q"  # 你的 Cloudflare 域名区域 ID
CF_RECORD_ID="812TJnBhaKPod2K4WdVTuuZ"  # 你的 Cloudflare record ID

# 子域名
SUBDOMAIN="a"

# 查询本机 IP 地址
current_ip=$(curl -s http://api.ipify.org)

# 读取上次保存的 IP 地址
if [ -f "last_ip.txt" ]; then
    last_ip=$(cat last_ip.txt)
else
    last_ip=""
fi

# 比较 IP 地址
if [ "$current_ip" != "$last_ip" ]; then
    echo "IP 地址已变更,更新 Cloudflare 域名记录..."
    
    # 更新 Cloudflare 域名记录
    update_result=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records/$CF_RECORD_ID" \
        -H "X-Auth-Email: $CF_EMAIL" \
        -H "X-Auth-Key: $CF_API_KEY" \
        -H "Content-Type: application/json" \
        --data '{"type":"A","name":"'$SUBDOMAIN'.tyleo.one","content":"'$current_ip'","ttl":1,"proxied":false}')

    if [[ $update_result == *"\"success\":true"* ]]; then
        echo "IP 地址已成功更新为 $current_ip"
        # 保存当前 IP 地址
        echo "$current_ip" > last_ip.txt
    else
        echo "更新失败: $update_result"
    fi
else
    echo "IP 地址未变更"
fi




参数说明

以上参数可以在Cloudflare 后台获取,但要获取Cloudflare record ID,还需要执行一下代码获取,把脚本中的tyleo.one替换成你自己的域名。子域名哪里可以随便填,执行成功的话会自动添加记录到Cloudflare。

通过代码获取到Cloudflare record ID:

代码需要在Linux下执行,注意:把下面中文的地方替换成你自己的实际参数。

确保你已经安装了 jq 工具,它用于解析 JSON 响应。你可以通过以下方式安装 jq:

sudo apt install jq  # Ubuntu/Debian

执行代码后看到输出一串长长的代码,在{"result"}:{"id"}:' 'ID冒号后面这一串就是 Record ID了,复制出来即可。

脚本修改好之后,可以保存为 CF_update_ip.sh

然后赋予执行权限:


chmod +x CF_update_ip.sh

然后输入: bash ./CF_update_ip.sh 即可执行,如果成功了就能看到在Cloudflare上添加了一条记录。

添加crontab定时任务


crontab -e
*/5 * * * * /root/CF_update_ip.sh >> /var/log/CF_update_ip.sh.log 2>&1
0 1 * * 7 echo "" > /var/log/CF_update_ip.sh.log

以上是一条5分钟自动执行一次的示例,可以根据具体情况修改为你系统的路径和时间间隔。

0

评论 (1)

取消
  1. 头像
    111
    Windows 10 · Google Chrome

    sadfsafdsdfa表情

    回复