使用脚本定时更新域名解析记录

这段脚本的功能是从多个IP地址中随机选择一个,并使用Cloudflare API更新域名解析记录。

脚本的主要步骤如下:

  1. 设置参数:您需要提供域名、子域名、DNS记录ID和Cloudflare API密钥。这些参数将用于更新DNS记录。
  2. IP地址列表:您可以在脚本中定义一个包含多个IP地址的数组ip_addresses。根据您的需求,将需要的IP地址添加到此列表中。
  3. 随机选择IP地址:定义了一个Shell函数select_random_ip,它接受IP地址列表作为参数。函数通过生成随机数来随机选择一个IP地址,并将其作为结果返回。
  4. 更新DNS记录函数:定义了一个Shell函数update_dns_record,它接受域名、子域名、DNS记录ID、新的IP地址和API密钥作为参数。函数构建Cloudflare API的请求URL,并使用curl发送PUT请求来更新DNS记录。它检查响应中的成功标志,并输出相应的消息。
  5. 随机选择IP地址:使用select_random_ip函数从IP地址列表中随机选择一个IP地址,并将其存储在变量selected_ip中。
  6. 调用函数更新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

可以将脚本命令添加到计划任务实现自动更新。

您可能还喜欢...