script_ip_cloudflare/cloudflare_script.sh

30 lines
1.1 KiB
Bash

#!/bin/bash
# echo "[$(date '+%Y-%m-%d %H:%M:%S')] Ejecutando actualización de IP..."
# Configuración
ZONE_ID="e70540b388ab9d20bfe27d9a31cd474b"
RECORD_ID="5d05a48c9d76c7767302442fffa096bd"
API_TOKEN="9BD-GB7PtGd5pgXTEBxnv3k1eJlJYJoIWx9HgLLs"
DOMAIN="ip.xala.dev"
# Obtener IP pública actual
IP=$(curl -s https://api.ipify.org)
# Obtener IP registrada en Cloudflare
DNS_IP=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" | jq -r '.result.content')
# Comparar IPs
if [ "$IP" != "$DNS_IP" ]; then
echo "La IP cambió: $DNS_IP$IP. Actualizando en Cloudflare..."
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
--data "{\"type\":\"A\",\"name\":\"$DOMAIN\",\"content\":\"$IP\",\"ttl\":120,\"proxied\":true}" | jq
# Notificación vía ntfy
curl -d "🌎 [$(date '+%Y-%m-%d %H:%M:%S')] IP actualizada: $DNS_IP$IP" ntfy.xala.dev/alerts
fi