💥 如何使用Cloudflare API自动导出所有域名的DNS记录
大家好,今天我将和大家分享如何使用Cloudflare API自动导出所有域名的DNS记录。这个教程适合那些需要管理多个域名的站长和开发者们。通过这个教程,你将学会如何自动化获取所有域名,并将每个域名的DNS记录导出到独立的文件中。📂
准备工作 📋
- 1. Cloudflare API Token: 首先,你需要从Cloudflare Dashboard获取一个有效的API Token,并确保它具有读取Zone信息和DNS记录的权限。
- 2. 安装jq工具: jq是一个用于解析JSON的命令行工具。如果你还没有安装,可以通过以下命令安装:
- 1. Debian/Ubuntu:
sudo apt-get install jq
- 2. macOS:
brew install jq
- 1. Debian/Ubuntu:
获取所有域名并保存到文件📜
我们首先需要获取Cloudflare账户下的所有域名。默认情况下,Cloudflare API每次请求只返回20个域名,所以我们需要处理分页。以下是一个完整的SHELL脚本示例,通过分页方式获取所有域名,并将其保存到一个文件中。
脚本: get_all_domains.sh
#!/bin/bash
# Cloudflare API Token
API_TOKEN="your_api_token_here"
# 输出文件包含所有域名
OUTPUT_FILE="domains.txt"
# 清空输出文件
> $OUTPUT_FILE
# 初始页数
PAGE=1
while true; do
# 获取当前页的域名
RESPONSE=$(curl -s -X GET “https://api.cloudflare.com/client/v4/zones?page=$PAGE&per_page=20”
-H “Authorization: Bearer $API_TOKEN”
-H “Content-Type: application/json”)
# 检查是否有结果
RESULT_COUNT=$(echo $RESPONSE | jq ‘.result | length’)
if [ $RESULT_COUNT -eq 0 ]; then
# 没有更多结果,退出循环
break
fi
# 提取域名并追加到输出文件
echo $RESPONSE | jq -r ‘.result[].name’ >> $OUTPUT_FILE
# 下一页
PAGE=$((PAGE + 1))
done
echo “All domains have been saved to $OUTPUT_FILE”
导出DNS记录 📤
接下来,我们需要读取保存的域名文件,获取每个域名的Zone ID,并导出其DNS记录保存到独立的文件中。
脚本:export_dns_records.sh
#!/bin/bash
# Cloudflare API Token
API_TOKEN="your_api_token_here"
# 输入文件包含域名,每行一个
DOMAIN_FILE="domains.txt"
# 检查是否安装了jq
if ! command -v jq &> /dev/null
then
echo "jq could not be found, please install jq to proceed."
exit 1
fi
# 读取域名文件
while IFS= read -r domain
do
echo "Processing domain: $domain"
# 获取Zone ID
ZONE_ID=$(curl -s -X GET “https://api.cloudflare.com/client/v4/zones?name=$domain”
-H “Authorization: Bearer $API_TOKEN”
-H “Content-Type: application/json” | jq -r ‘.result[0].id’)
if [ “$ZONE_ID” != “null” ]; then
echo “Zone ID for $domain: $ZONE_ID”
# 导出DNS记录并保存到文件
OUTPUT_FILE=”${domain}_dns_records.txt”
curl -s -X GET “https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/export”
-H “Authorization: Bearer $API_TOKEN”
-H “Content-Type: application/json” > “$OUTPUT_FILE”
if [ $? -eq 0 ]; then
echo “DNS records for $domain have been exported to $OUTPUT_FILE”
else
echo “Failed to export DNS records for $domain”
fi
else
echo “Failed to get Zone ID for $domain”
fi
echo “”
done < “$DOMAIN_FILE”
使用步骤 🚀
- 1. 确保脚本可执行
chmod +x get_all_domains.sh
chmod +x export_dns_records.sh
- 2.运行获取所有域名的脚本
./get_all_domains.sh
该脚本将分页获取所有域名,并将其保存到 domains.txt 文件中。 3. 运行导出DNS记录的脚本
./export_dns_records.sh
该脚本将读取 domains.txt
中的每个域名,获取其Zone ID,然后导出DNS记录,并将每个域名的DNS记录保存到独立的文件中,例如 example1.com_dns_records.txt
。
📊
通过这些步骤,你可以自动化地获取Cloudflare账户下的所有域名,并导出每个域名的DNS记录保存到独立的文件中。这对于管理多个域名的站长和开发者来说,是一个非常有用的技巧!
📝
-
- • 自动化管理: 通过脚本自动化获取和导出DNS记录,节省时间和精力。
- • 全面覆盖: 处理分页,确保获取到所有域名。
- • 便于操作: 将所有域名保存到文件中,方便后续操作。 希望这篇教程对你有帮助,记得点赞并分享给更多有需要的小伙伴哦!❤️
原创文章,作者:速盾高防cdn,如若转载,请注明出处:https://www.sudun.com/ask/93475.html