注意区分好Zone_ID对应的域名,删除需谨慎!!! 注意区分好Zone_ID对应的域名,删除需谨慎!!! 注意区分好Zone_ID对应的域名,删除需谨慎!!!
其中包含了一个 if
判断,用于检查 Record_Type
的值是否为星号 *
,并相应地调整请求的URL。
nano del-all-dns.sh
#粘贴以下内容,修改相应的信息为你自己的,Ctrl+X退出,Y确认,回车确认
#!/bin/bash
# 配置区域
Auth_Email="账户的邮箱Auth_Email"
API_Key="账户的API_Key"
Zone_ID="域名的Zone_ID"
Record_Type="要删除的DNS记录类型" #只筛选这类型的记录,可选值 A AAAA CNAME等,若为*则删掉全部记录。
# 用于存储DNS记录ID的数组
declare -a record_ids
# 函数:获取DNS记录ID
get_dns_records() {
local page=1
local type_query=""
# 检查Record_Type是否为星号*
if [ "$Record_Type" == "*" ]; then
type_query=""
else
type_query="&type=${Record_Type}"
fi
while true; do
# 构造请求URL
local url="https://api.cloudflare.com/client/v4/zones/${Zone_ID}/dns_records?page=${page}&per_page=100&order=type&direction=desc&match=all${type_query}"
local response=$(curl -s -X GET "${url}" \
-H "X-Auth-Email: ${Auth_Email}" \
-H "X-Auth-Key: ${API_Key}" \
-H "Content-Type: application/json")
local records_count=$(echo $response | jq '.result | length')
if [ "$records_count" -eq 0 ]; then
break
fi
echo $response | jq -r '.result[] | .id' | sed 's/"//g' >> temp_ids.txt
# echo $response | jq '.result[] | .id' >> temp_ids.txt
((page++))
done
}
# 函数:删除DNS记录
delete_dns_records() {
while read -r del_record_id; do
echo "del_record_id: "${del_record_id}
curl -s -X DELETE "https://api.cloudflare.com/client/v4/zones/${Zone_ID}/dns_records/${del_record_id}" \
-H "X-Auth-Email: ${Auth_Email}" \
-H "X-Auth-Key: ${API_Key}" \
-H "Content-Type: application/json";
echo "[[End]]"
done < temp_ids.txt
}
# 主逻辑
get_dns_records
delete_dns_records
rm temp_ids.txt # 清理临时文件
在这个脚本中,get_dns_records
函数首先检查 Record_Type
变量的值。如果它的值是星号 *
,那么 type_query
变量将为空字符串,否则它将包含 &type=${Record_Type}
。然后,根据 type_query
的值构造请求的URL。
请注意,这个脚本没有包含错误处理逻辑,例如API调用失败或权限不足的情况。在实际使用中,您可能需要添加相应的错误检查和处理逻辑以确保脚本的健壮性。此外,确保在执行此脚本之前,您已经对Cloudflare API有足够的了解,并已经测试过脚本的行为以避免不必要的数据丢失。
#再次提醒,需要谨慎!
#再次提醒,需要谨慎!
#再次提醒,需要谨慎!
bash del-all-dns.sh #执行删除全部DNS记录
回到Cloudflare,刷新就能看到DNS记录被删除了