Last active
February 9, 2024 17:38
-
-
Save maagmirror/d9860cacc819d57c17316d6cd6b0f1c6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Tu correo electrónico registrado en Cloudflare | |
CF_EMAIL="correo@gmail.com" | |
# Tu clave de API global de Cloudflare (asegúrate de cambiarla si aún no lo has hecho) | |
CF_API_KEY="api_key" | |
# La IP antigua que deseas actualizar | |
OLD_IP="1.1.1.1" | |
# La nueva IP | |
NEW_IP="1.1.1.1" | |
echo "Obteniendo lista de zonas..." | |
# Obtener la lista de zonas (dominios) | |
zones=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones" \ | |
-H "X-Auth-Email: $CF_EMAIL" \ | |
-H "X-Auth-Key: $CF_API_KEY" \ | |
-H "Content-Type: application/json") | |
# Para cada zona, obtén todos los registros DNS y actualízalos si es necesario | |
echo "$zones" | jq -r '.result[] | .id + " " + .name' | while read ZONE_ID ZONE_NAME; do | |
echo "Procesando zona: $ZONE_NAME ($ZONE_ID)" | |
# Procesar registros A | |
echo "Actualizando registros A en $ZONE_NAME..." | |
records=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?type=A" \ | |
-H "X-Auth-Email: $CF_EMAIL" \ | |
-H "X-Auth-Key: $CF_API_KEY" \ | |
-H "Content-Type: application/json") | |
echo "$records" | jq -r '.result[] | select(.content == "'$OLD_IP'") | .id + " " + .name' | while read RECORD_ID RECORD_NAME; do | |
echo "Actualizando registro A: $RECORD_NAME a $NEW_IP" | |
update=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \ | |
-H "X-Auth-Email: $CF_EMAIL" \ | |
-H "X-Auth-Key: $CF_API_KEY" \ | |
-H "Content-Type: application/json" \ | |
--data '{"type":"A","name":"'$RECORD_NAME'","content":"'$NEW_IP'","ttl":1,"proxied":false}') | |
echo "Resultado de la actualización: $(echo "$update" | jq .success)" | |
done | |
# Procesar registros TXT que contienen la IP antigua | |
echo "Buscando registros TXT en $ZONE_NAME que contengan la IP $OLD_IP..." | |
records=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?type=TXT" \ | |
-H "X-Auth-Email: $CF_EMAIL" \ | |
-H "X-Auth-Key: $CF_API_KEY" \ | |
-H "Content-Type: application/json") | |
echo "$records" | jq -r '.result[] | select(.content | contains("ip4:'$OLD_IP'")) | .id + " " + .name + " " + .content' | while IFS=" " read RECORD_ID RECORD_NAME RECORD_CONTENT; do | |
echo "Encontrado registro TXT para actualizar: $RECORD_NAME con ID $RECORD_ID" | |
NEW_RECORD_CONTENT=$(echo "$RECORD_CONTENT" | sed "s/ip4:$OLD_IP/ip4:$NEW_IP/g") | |
echo "Actualizando registro TXT: $RECORD_NAME" | |
update=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \ | |
-H "X-Auth-Email: $CF_EMAIL" \ | |
-H "X-Auth-Key: $CF_API_KEY" \ | |
-H "Content-Type: application/json" \ | |
--data '{"type":"TXT","name":"'$RECORD_NAME'","content":"'$NEW_RECORD_CONTENT'"}') | |
echo "Resultado de la actualización: $(echo "$update" | jq .success)" | |
done | |
done | |
echo "Proceso completado." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment