DDNS西部数码脚本
- 作者:
- 淡白
- 创建时间:
- 2024-07-05 21:13:00
- ddns shell 西部数码
摘要:这是一个用于动态更新域名解析记录的脚本,使用的是西部数码提供的DDNS API。脚本首先获取当前的IP地址,然后生成Token,构建API请求URL,并根据是否设置代理服务器而构建不同的curl命令。最后执行curl命令,将当前IP地址更新到指定的域名解析记录中。执行完毕后,输出API的响应结果。
DDNS
有个tw小鸡是是动态ip所以需要ddns我的域名是从西部数码买的。他也有提供api需要代理等级。 搞了一个小脚本
#!/bin/bash
# 获取当前IP地址函数
get_current_ip() {
curl -s -4 ifconfig.me
}
# 对错误进行处理
handle_error() {
local err_msg="\$1"
echo "Error: $err_msg" >&2
exit 1
}
# 直接在脚本中定义固定参数
USERNAME="" # 替换为您的西部数码用户名
API_PASSWORD="" # 替换为您的API密码
DOMAIN="" # 替换为您的域名
DNS_ID="" # 替换为您的解析记录编号 可以从页面打开控制台 修改域名解析看到
TTL="60" # 生效时间值
HOST="" # 主机头
LEVEL="10" # 优先级MX记录有效
ACT="moddnsrecord" # 请求动作,修改域名解析
PROXY_SERVER="" # 代理服务器地址,如果为空则不使用代理
# 获取当前IP地址
current_ip=$(get_current_ip)
[ -z "$current_ip" ] && handle_error "无法获取当前IP地址"
# 输出当前IP地址
echo "当前IP地址是: $current_ip"
# 生成时间戳(毫秒级时间戳)
TIMESTAMP=$(($(date +%s%N)/1000000))
# 生成Token
RAW_TOKEN="${USERNAME}${API_PASSWORD}${TIMESTAMP}"
TOKEN=$(echo -n "${RAW_TOKEN}" | md5sum | cut -d ' ' -f 1)
# API请求URL
API_URL="https://api.west.cn/api/v2/domain/"
# 判断是否设置代理服务器,构建curl命令
if [ -z "$PROXY_SERVER" ]; then
CURL_CMD="curl -s -X POST $API_URL \
-H \"Content-Type: application/x-www-form-urlencoded\" \
-d \"username=${USERNAME}\" \
-d \"time=${TIMESTAMP}\" \
-d \"token=${TOKEN}\" \
-d \"act=${ACT}\" \
-d \"domain=${DOMAIN}\" \
-d \"id=${DNS_ID}\" \
-d \"value=${current_ip}\" \
-d \"ttl=${TTL}\" \
-d \"host=${HOST}\" \
-d \"level=${LEVEL}\""
else
CURL_CMD="curl -x $PROXY_SERVER -s -X POST $API_URL \
-H \"Content-Type: application/x-www-form-urlencoded\" \
-d \"username=${USERNAME}\" \
-d \"time=${TIMESTAMP}\" \
-d \"token=${TOKEN}\" \
-d \"act=${ACT}\" \
-d \"domain=${DOMAIN}\" \
-d \"id=${DNS_ID}\" \
-d \"value=${current_ip}\" \
-d \"ttl=${TTL}\" \
-d \"host=${HOST}\" \
-d \"level=${LEVEL}\""
fi
# 执行curl命令并处理错误
RESPONSE=$(eval $CURL_CMD) || handle_error "API请求失败"
# 打印响应
echo "API Response: $RESPONSE"