39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| set -euo pipefail
 | |
| 
 | |
| # Load config
 | |
| source config.conf
 | |
| 
 | |
| EXPORT_FOLDER="export"
 | |
| mkdir -p "$EXPORT_FOLDER"
 | |
| 
 | |
| # Step 1: Fetch all zones from Cloudflare
 | |
| echo "Fetching zone list from Cloudflare..."
 | |
| zones_json=$(curl -s https://api.cloudflare.com/client/v4/zones \
 | |
|     -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
 | |
|     -H "Content-Type: application/json")
 | |
| 
 | |
| # Step 2: Parse zones (needs jq)
 | |
| zone_count=$(echo "$zones_json" | jq '.result | length')
 | |
| echo "Found $zone_count zones."
 | |
| 
 | |
| # Step 3: Loop through zones
 | |
| for ((i=0; i<zone_count; i++)); do
 | |
|     ZONE_ID=$(echo "$zones_json" | jq -r ".result[$i].id")
 | |
|     SITE_NAME=$(echo "$zones_json" | jq -r ".result[$i].name")
 | |
| 
 | |
|     TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
 | |
|     OUTPUT_FILE="$EXPORT_FOLDER/${SITE_NAME}_$TIMESTAMP.txt"
 | |
| 
 | |
|     echo "Exporting DNS records for $SITE_NAME..."
 | |
| 
 | |
|     curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/export" \
 | |
|         -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
 | |
|         -H "Content-Type: application/json" | tee "$OUTPUT_FILE"
 | |
| 
 | |
|     echo " -> Saved to $OUTPUT_FILE"
 | |
| done
 | |
| 
 | |
| echo "✅ All exports complete. Files are in the '$EXPORT_FOLDER' folder."
 | |
| 
 |