30 lines
1.1 KiB
Bash
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 |