有24人阅读过
使用群晖计划任务更新DNSPOD的ddns记录
发布于2024/11/14 更新于2024/11/14
[ 教程仅保证更新时有效,请自行测试。]
发布于2024/11/14 更新于2024/11/14
[ 教程仅保证更新时有效,请自行测试。]
[ 教程仅保证更新时有效,请自行测试。]
可以使用DNSPOD的api进行定时更新DDNS的IP记录,代码如下:
#!/bin/bash # DNSPod 信息 DP_Id="xxxxxx" DP_Key="ae44b2216ea261e0efdxxxx94e0a216b" DOMAIN="giraff.fun" # 主域名 # 记录 SUB_DOMAIN="*" # 子域名 RECORD_TYPE="A" # 记录类型 RECORD_LINE="默认" # 线路类型 API_TOKEN="${DP_Id},${DP_Key}" # DNSPod API Token # 自动获取本机的公网 IPv4 地址 NEW_IP=$(curl -s4 ifconfig.me) # 确认 NEW_IP 已成功获取 if [ -z "$NEW_IP" ]; then echo "无法获取本机公网 IPv4,请检查网络连接。" exit 1 fi echo "本机公网 IPv4 为: $NEW_IP" # 获取解析记录列表 response=$(curl -s -X POST https://dnsapi.cn/Record.List \ -d "login_token=${API_TOKEN}" \ -d "format=json" \ -d "domain=${DOMAIN}" \ -d "sub_domain=${SUB_DOMAIN}") # 使用 jq 解析获取的 Record ID RECORD_ID=$(echo "$response" | jq -r '.records[0].id') if [ -z "$RECORD_ID" ] || [ "$RECORD_ID" == "null" ]; then echo "记录不存在,创建新解析记录..." # 调用 Record.Create API 创建新解析记录 create_response=$(curl -s -X POST https://dnsapi.cn/Record.Create \ -d "login_token=${API_TOKEN}" \ -d "format=json" \ -d "domain=${DOMAIN}" \ -d "sub_domain=${SUB_DOMAIN}" \ -d "record_type=${RECORD_TYPE}" \ -d "record_line=${RECORD_LINE}" \ -d "value=${NEW_IP}") # 解析创建响应 create_status_code=$(echo "$create_response" | jq -r '.status.code') create_status_message=$(echo "$create_response" | jq -r '.status.message') # 判断是否创建成功 if [ "$create_status_code" == "1" ]; then echo "DNS 记录创建成功: $create_status_message" else echo "DNS 记录创建失败: $create_status_message" fi else echo "记录已存在,更新解析记录..." # 发送 POST 请求更新 DNS 记录 update_response=$(curl -s -X POST https://dnsapi.cn/Record.Modify \ -d "login_token=${API_TOKEN}" \ -d "format=json" \ -d "domain=${DOMAIN}" \ -d "record_id=${RECORD_ID}" \ -d "sub_domain=${SUB_DOMAIN}" \ -d "record_type=${RECORD_TYPE}" \ -d "record_line=${RECORD_LINE}" \ -d "value=${NEW_IP}") # 解析响应 update_status_code=$(echo "$update_response" | jq -r '.status.code') update_status_message=$(echo "$update_response" | jq -r '.status.message') # 判断是否更新成功 if [ "$update_status_code" == "1" ]; then echo "DNS 记录更新成功: $update_status_message" else echo "DNS 记录更新失败: $update_status_message" fi fi
文章对你有帮助吗?
- 一般[0]
- 很赞[0]
- 没用[0]
- 垃圾[0]
- 无语[0]