注意区分好Zone_ID对应的域名,删除需谨慎!!! 注意区分好Zone_ID对应的域名,删除需谨慎!!! 注意区分好Zone_ID对应的域名,删除需谨慎!!!

其中包含了一个 if判断,用于检查 Record_Type的值是否为星号 *,并相应地调整请求的URL。

image-20240612112749220

 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记录被删除了