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