使用脚本定时更新域名解析记录
这段脚本的功能是从多个IP地址中随机选择一个,并使用Cloudflare API更新域名解析记录。
脚本的主要步骤如下:
- 设置参数:您需要提供域名、子域名、DNS记录ID和Cloudflare API密钥。这些参数将用于更新DNS记录。
- IP地址列表:您可以在脚本中定义一个包含多个IP地址的数组
ip_addresses
。根据您的需求,将需要的IP地址添加到此列表中。 - 随机选择IP地址:定义了一个Shell函数
select_random_ip
,它接受IP地址列表作为参数。函数通过生成随机数来随机选择一个IP地址,并将其作为结果返回。 - 更新DNS记录函数:定义了一个Shell函数
update_dns_record
,它接受域名、子域名、DNS记录ID、新的IP地址和API密钥作为参数。函数构建Cloudflare API的请求URL,并使用curl
发送PUT请求来更新DNS记录。它检查响应中的成功标志,并输出相应的消息。 - 随机选择IP地址:使用
select_random_ip
函数从IP地址列表中随机选择一个IP地址,并将其存储在变量selected_ip
中。 - 调用函数更新DNS记录:通过调用
update_dns_record
函数,传递域名、子域名、DNS记录ID和选定的IP地址来更新DNS记录。脚本执行时会自动调用该函数,并输出更新结果。
通过定期执行此脚本,您可以实现每次更新随机选择一个IP地址来更换域名解析记录的功能。这可以用于负载均衡、高可用性或其他网络架构需求。
请注意,脚本中的参数和函数只是示例,并且脚本的功能可能需要根据您的具体需求进行修改和定制。
#!/bin/bash
# 设置参数
domain="example.com" # 域名
subdomain="subdomain" # 子域名
record_id="record_id" # DNS记录ID
api_key="your_api_key" # Cloudflare API密钥
# IP地址列表
ip_addresses=("192.168.0.100" "192.168.0.101" "192.168.0.102")
# 随机选择一个IP地址
select_random_ip() {
local ip_list=("$@")
local num_ips=${#ip_list[@]}
local random_index=$(( RANDOM % num_ips ))
local random_ip=${ip_list[random_index]}
echo "$random_ip"
}
# 更新DNS记录函数
update_dns_record() {
local domain="$1"
local subdomain="$2"
local record_id="$3"
local new_ip="$4"
local api_key="$5"
url="https://api.cloudflare.com/client/v4/zones/$domain/dns_records/$record_id"
headers=(
"Authorization: Bearer $api_key"
"Content-Type: application/json"
)
data="{\"type\":\"A\",\"name\":\"$subdomain\",\"content\":\"$new_ip\"}"
response=$(curl -s -X PUT -H "${headers[@]}" -d "$data" "$url")
status_code=$(echo "$response" | jq -r '.success')
if [[ "$status_code" == "true" ]]; then
echo "DNS record for $subdomain.$domain updated successfully."
else
echo "Failed to update DNS record. Error: $response"
fi
}
# 随机选择一个IP地址
selected_ip=$(select_random_ip "${ip_addresses[@]}")
# 调用函数更新DNS记录
update_dns_record "$domain" "$subdomain" "$record_id" "$selected_ip" "$api_key"
将ip地址列表改为自己的,运行脚本即可随机取ip更新记录
./dns_update.sh
可以将脚本命令添加到计划任务实现自动更新。