有177人阅读过
使用群晖计划任务更新腾讯云的ddns记录
发布于2024/11/14 更新于2024/11/14
[ 教程仅保证更新时有效,请自行测试。]
发布于2024/11/14 更新于2024/11/14
[ 教程仅保证更新时有效,请自行测试。]
[ 教程仅保证更新时有效,请自行测试。]
#!/bin/bash
# 自动获取本机的公网 IPv4 地址
NEW_IP=$(curl -s4 ifconfig.me)
# 腾讯云信息
SECRET_ID="your_secret_id" # 腾讯云 SecretId
SECRET_KEY="your_secret_key" # 腾讯云 SecretKey
DOMAIN="giraff.fun" # 主域名
# 子域名和记录类型
SUB_DOMAIN="*" # 子域名
RECORD_TYPE="A" # 记录类型
RECORD_LINE="default" # 线路类型
# 获取腾讯云的 DomainId(通过 DescribeDomains API 查询)
response=$(curl -s -X GET "https://cns.api.qcloud.com/v2/index.php" \
-d "Action=DescribeDomains" \
-d "Region=ap-guangzhou" \
-d "SecretId=${SECRET_ID}" \
-d "SecretKey=${SECRET_KEY}")
# 解析 DomainId
DOMAIN_ID=$(echo "$response" | jq -r ".Domains.Domain[] | select(.DomainName==\"${DOMAIN}\") | .DomainId")
# 检查是否成功获取 DomainId
if [ -z "$DOMAIN_ID" ]; then
echo "未能找到域名 ${DOMAIN} 的 DomainId,请检查域名是否正确。"
exit 1
fi
echo "获取的 DomainId 为: $DOMAIN_ID"
# 确认 NEW_IP 已成功获取
if [ -z "$NEW_IP" ]; then
echo "无法获取本机公网 IPv4,请检查网络连接。"
exit 1
fi
echo "本机公网 IPv4 为: $NEW_IP"
# 获取解析记录列表
response=$(curl -s -X GET "https://cns.api.qcloud.com/v2/index.php" \
-d "Action=DescribeRecordList" \
-d "Region=ap-guangzhou" \
-d "DomainId=${DOMAIN_ID}" \
-d "SubDomain=${SUB_DOMAIN}" \
-d "RecordType=${RECORD_TYPE}" \
-d "SecretId=${SECRET_ID}" \
-d "SecretKey=${SECRET_KEY}")
# 使用 jq 解析获取的 Record ID
RECORD_ID=$(echo "$response" | jq -r '.RecordList[0].RecordId')
if [ -z "$RECORD_ID" ] || [ "$RECORD_ID" == "null" ]; then
echo "记录不存在,创建新解析记录..."
# 调用 CreateRecord API 创建新解析记录
create_response=$(curl -s -X GET "https://cns.api.qcloud.com/v2/index.php" \
-d "Action=CreateRecord" \
-d "Region=ap-guangzhou" \
-d "DomainId=${DOMAIN_ID}" \
-d "SubDomain=${SUB_DOMAIN}" \
-d "RecordType=${RECORD_TYPE}" \
-d "RecordLine=${RECORD_LINE}" \
-d "Value=${NEW_IP}" \
-d "SecretId=${SECRET_ID}" \
-d "SecretKey=${SECRET_KEY}")
# 解析创建响应
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 GET "https://cns.api.qcloud.com/v2/index.php" \
-d "Action=ModifyRecord" \
-d "Region=ap-guangzhou" \
-d "DomainId=${DOMAIN_ID}" \
-d "RecordId=${RECORD_ID}" \
-d "SubDomain=${SUB_DOMAIN}" \
-d "RecordType=${RECORD_TYPE}" \
-d "RecordLine=${RECORD_LINE}" \
-d "Value=${NEW_IP}" \
-d "SecretId=${SECRET_ID}" \
-d "SecretKey=${SECRET_KEY}")
# 解析响应
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]


