#教程# Cloudflare 检测HTTP返回代码 宕机切换IP脚本

功能介绍:

通过检测 HTTP 返回代码小于 307,不做 IP 切换;

通过检测 HTTP 返回代码大于 307,切换备用 IP;

当主站 IP 恢复,检测 HTTP 返回代码小于 307,切换主站 IP;

实施步骤:

1、获取 CF 的 ID

    curl -X GET "https://api.cloudflare.com/client/v4/zones/这里填你官网的 Zone ID/dns_records" \
         -H "X-Auth-Email: 这里填你登录的 EMAIL 例如:[email protected]" \
         -H "Authorization: Bearer 这里填你的 API Keys 例如:c9a3a22e788cafcd827b78e1e8dfa7f22b370" \
         -H "Content-Type: application/json"

这里注意下,每个子域名获取的 id 都是不一样的:

2、新建脚本 status.sh 把两个 ID 分别填写正确的位置

    #!/bin/bash
    # author: yunloc
    # website: https://yunloc.com
     
    # 获取 CF 的 ID
    # curl -X GET "https://api.cloudflare.com/client/v4/zones/这里填你官网的 Zone ID/dns_records" \
    #     -H "X-Auth-Email: 这里填你登录的 EMAIL 例如:[email protected]" \
    #     -H "Authorization: Bearer  这里填你的 API Keys 例如:c9a3a22e788cafcd827b78e1e8dfa7f22b370" \
    #     -H "Content-Type: application/json" 
     
    CheckURL="https://www.yunloc.com"
     
    if [ ! -f "status.txt" ];then
    echo "" > status.txt
    else
    status=$(cat status.txt)
    fi
    STATUS_CODE=$(curl -o /dev/null -m 10 --connect-timeout 10 -s -w %{http_code} $CheckURL)
    echo "当前返回代码:$STATUS_CODE"
    if [[ $STATUS_CODE <307 ]] && [[ $status -eq 1 ]] 
    then
    cResult=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/这里填你获取的 Zone id/dns_records/这里填你获取的 ID" \
         -H "X-Auth-Email: 这里填你登录的 EMAIL 例如:[email protected]" \
         -H "Authorization: Bearer  这里填你的 API Keys 例如:c9a3a22e788cafcd827b78e1e8dfa7f22b370" \
         -H "Content-Type: application/json" \
    	 --data '{"type":"A","name":"www.yunloc.com","content":"127.0.0.1","proxiable":true,"proxied":false,"ttl":1}')
    echo $cResult
    echo "返回代码低于 307,返回原站 IP。"
    echo 0 > status.txt
    elif [[ $STATUS_CODE <307 ]]
    then
    echo "返回代码低于 307,不做任何改变!"
    exit
    else
    cResult=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/这里填你获取的 Zone id/dns_records/这里填你获取的 ID" \
         -H "X-Auth-Email: 这里填你登录的 EMAIL 例如:[email protected]" \
         -H "X-Auth-Key: 这里填你的 API Keys 例如:c9a3a22e788cafcd827b78e1e8dfa7f22b370" \
         -H "Content-Type: application/json" \
    	 --data '{"type":"A","name":"www.yunloc.com","content":"127.0.0.2","proxiable":true,"proxied":false,"ttl":1}')
    echo $cResult
    echo "返回代码高于 307,更改备用 IP 记录。"
    echo 1 > status.txt
    fi

设置定时任务,每 10 分钟检查一次:

此脚本可以放在任何机器上定时运行,最好不要放在网站同服务器,不然服务器挂了就不能切换了.

https://www.yunloc.com/698.html