Cloudflare小云朵开启关闭bash脚本
可以配合面板里的计划任务实现Cloudflare定时开启定时关闭小云朵
#!/bin/bash
# 设置您的 Cloudflare API 密钥和账户 ID
api_key="Cloudflare API 密钥"
account_id="Cloudflare 账户 ID"
# 设置 网站域名和DNS记录域名
zone_name="Cloudflare里的网站域名"
record_name="DNS的记录,例如:baidu.com或者tieba.baidu.com"
# 获取区域 ID
zone_id=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=${zone_name}" \
-H "Authorization: Bearer ${api_key}" \
-H "Content-Type: application/json" | jq -r '.result[0].id')
# 获取 DNS 记录的 ID
record_id=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records?type=A&name=${record_name}" \
-H "Authorization: Bearer ${api_key}" \
-H "Content-Type: application/json" | jq -r '.result[0].id')
# 检查当前的代理状态
current_proxy_status=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${record_id}" \
-H "Authorization: Bearer ${api_key}" \
-H "Content-Type: application/json" | jq -r '.result.proxied')
if [[ $current_proxy_status == "true" ]]; then
# 如果代理状态是已开启,则关闭它
curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${record_id}" \
-H "Authorization: Bearer ${api_key}" \
-H "Content-Type: application/json" \
--data '{"proxied":false}' > /dev/null
echo "Cloudflare DNS记录的代理状态已关闭。"
else
# 如果代理状态是已关闭,则开启它
curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${record_id}" \
-H "Authorization: Bearer ${api_key}" \
-H "Content-Type: application/json" \
--data '{"proxied":true}' > /dev/null
echo "Cloudflare DNS记录的代理状态已启用。"
fi
Cloudflare API 密钥:API 令牌 | Cloudflare
Cloudflare 账户 ID:Cloudflare 站点设置里的概述页右下角
jq: command not found
如果运行脚本时遇到了 jq: command not found
错误,那么可能是因为您的系统上没有安装 jq
命令行工具。jq
是一款强大的 JSON 处理工具,可以帮助您轻松地解析 JSON 数据并提取所需的信息。
在 Ubuntu / Debian 系统上:
sudo apt-get update
sudo apt-get install jq
在 CentOS / RHEL 系统上:
sudo yum install epel-release
sudo yum install jq
在 macOS 上(使用 Homebrew):
brew install jq
在 Windows 上(使用 Scoop):
scoop install jq
pQqAX9bAQQH
tG1p7oERynP
WZ335jTIGIf
zaTSc0AwQ1U
SOhxEZtDO1T
yMe7EVnXWKG
TqWXWDImhNn
7V8TSJF1LvK
bhgWxMDQT3R
9o3SlbnBQgy
4w8egHB4yJL
1cFEbjlHj0I
7T66VHZ2cFh
ttT8tpE0zhG
23KDbguktCX
U6mFcA1HqZF
bFjVrlyTdxd
6WQ3yxygtVi
WIkG7iKg3jS
5rFIJqNU8Fh
ZPRKzowuZ52
UJAR4Bv7yFS
F4KScVPWRxN
GZI7Sbz2HXC
KfUxkqnYvt3
FeYqbOQ4sCT
IZ3d79xNZ7d
fAUzVwMHoUr
r9NZTqxtEBW
VxSrSC9FOjO
9LGwV9ZXZpT
r7vh9d7kIW2
3i6MmKC1id9
SBp2UsvbA8j
N6bZBkPegqs