如何使用Cloudflare API 之 DNS记录导出

 

💥 如何使用Cloudflare API自动导出所有域名的DNS记录

大家好,今天我将和大家分享如何使用Cloudflare API自动导出所有域名的DNS记录。这个教程适合那些需要管理多个域名的站长和开发者们。通过这个教程,你将学会如何自动化获取所有域名,并将每个域名的DNS记录导出到独立的文件中。📂

准备工作 📋

  1. 1. Cloudflare API Token: 首先,你需要从Cloudflare Dashboard获取一个有效的API Token,并确保它具有读取Zone信息和DNS记录的权限。
  2. 2. 安装jq工具: jq是一个用于解析JSON的命令行工具。如果你还没有安装,可以通过以下命令安装:
    1. 1. Debian/Ubuntu: sudo apt-get install jq
    2. 2. macOS: brew install jq

获取所有域名并保存到文件📜

我们首先需要获取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. 1. 确保脚本可执行
chmod +x get_all_domains.sh
chmod +x export_dns_records.sh
  1. 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

(0)
速盾高防cdn's avatar速盾高防cdn
上一篇 2024年7月11日 下午3:31
下一篇 2024年7月11日 下午3:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注