shell&sh脚本:Cloudflare 自动检测检测HTTP返回代码 宕机切换服务器IP脚本

功能介绍:

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

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

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

实施步骤:

1、获取 CF 的 ID

  1. curl -X GET "https://api.cloudflare.com/client/v4/zones/这里填你官网的 Zone ID/dns_records" \

  2. -H "X-Auth-Email: 这里填你登录的 EMAIL 例如:[email protected]" \

  3. -H "X-Auth-Key: 这里填你的 API Keys 例如:c9a3a22e788cafcd827b78e1e8dfa7f22b370" \

  4. -H "Content-Type: application/json"

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

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

#!/bin/bash

# author: 94p

# website: http://www.94p.net

 

# 获取 CF 的 ID

# curl -X GET "https://api.cloudflare.com/client/v4/zones/这里填你官网的 Zone ID/dns_records" \

# -H "X-Auth-Email: 这里填你登录的 EMAIL 例如:[email protected]" \

# -H "X-Auth-Key: 这里填你的 API Keys 例如:c9a3a22e788cafcd827b78e1e8dfa7f22b370" \

# -H "Content-Type: application/json"

 

CheckURL="http://www.94p.net"

 

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 "X-Auth-Key: 这里填你的 API Keys 例如:c9a3a22e788cafcd827b78e1e8dfa7f22b370" \

-H "Content-Type: application/json" \

--data '{"type":"A","name":"www.94p.net","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.94p.net","content":"127.0.0.2","proxiable":true,"proxied":false,"ttl":1}')

echo $cResult

echo "返回代码高于 307,更改备用 IP 记录。"

echo 1 > status.txt

fi

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

*/10 * * * * /root/status.sh

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

3、如果需要宕机切换IP,可以参考 502 重启脚本,检测代码为 000 是就代表宕机了:

#!/bin/bash

 

CheckURL="http://www.94p.net"

# curl -I -m 10 -o /dev/null -s -w %{http_code} http://www.94p.net

STATUS_CODE=`curl -o /dev/null -m 10 --connect-timeout 10 -s -w %{http_code} $CheckURL`

#echo "$CheckURL Status Code:\t$STATUS_CODE"

if [ "$STATUS_CODE" = "502" ]; then

/etc/init.d/php-fpm restart

fi

申明:   本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件[email protected]与我们联系处理。敬请谅解!