Files
hurricane/cloudflare/checkip.sh

76 lines
2.3 KiB
Bash
Raw Normal View History

2026-02-12 17:26:28 +00:00
#!/usr/bin/env bash
LOG_FILE="/var/log/public_ip_monitor.log"
LAST_IP_FILE="/var/log/last_ip.txt"
MAKE_DIR="/root/hurricane/cloudflare/zones" # CHANGE THIS to your Makefile directory
# Make sure log files exist
touch "$LOG_FILE"
touch "$LAST_IP_FILE"
while true; do
TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")
echo "============================================" | tee -a "$LOG_FILE"
echo "[$TIMESTAMP] Checking public IP..." | tee -a "$LOG_FILE"
IP=""
METHOD=""
# Try api.ipify.org
echo "[$TIMESTAMP] Trying api.ipify.org..." | tee -a "$LOG_FILE"
IP=$(curl -s --max-time 10 https://api.ipify.org)
if [[ -n "$IP" ]]; then
METHOD="api.ipify.org"
echo "[$TIMESTAMP] SUCCESS: Retrieved IP: $IP" | tee -a "$LOG_FILE"
else
echo "[$TIMESTAMP] FAILED: api.ipify.org did not return an IP." | tee -a "$LOG_FILE"
echo "[$TIMESTAMP] Trying ifconfig.me..." | tee -a "$LOG_FILE"
IP=$(curl -s --max-time 10 http://ifconfig.io)
if [[ -n "$IP" ]]; then
METHOD="ifconfig.me"
echo "[$TIMESTAMP] SUCCESS: Retrieved IP: $IP" | tee -a "$LOG_FILE"
else
echo "[$TIMESTAMP] FAILED: ifconfig.me did not return an IP." | tee -a "$LOG_FILE"
echo "[$TIMESTAMP] Trying dig opendns..." | tee -a "$LOG_FILE"
IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
if [[ -n "$IP" ]]; then
METHOD="dig opendns"
echo "[$TIMESTAMP] SUCCESS: Retrieved IP: $IP" | tee -a "$LOG_FILE"
else
IP="FAILED TO RESOLVE"
METHOD="All methods failed"
echo "[$TIMESTAMP] ERROR: All methods failed to retrieve IP." | tee -a "$LOG_FILE"
fi
fi
fi
if [[ "$IP" == "FAILED TO RESOLVE" ]]; then
echo "[$TIMESTAMP] ERROR: Could not determine public IP." | tee -a "$LOG_FILE"
else
# Read previous IP
LAST_IP=$(cat "$LAST_IP_FILE")
if [[ "$IP" != "$LAST_IP" ]]; then
echo "[$TIMESTAMP] Detected IP change: $LAST_IP --> $IP" | tee -a "$LOG_FILE"
echo "[$TIMESTAMP] Running 'make apply' in $MAKE_DIR..." | tee -a "$LOG_FILE"
cd "$MAKE_DIR"
make apply >> "$LOG_FILE" 2>&1
echo "$IP" > "$LAST_IP_FILE"
echo "[$TIMESTAMP] 'make apply' completed." | tee -a "$LOG_FILE"
else
echo "[$TIMESTAMP] No change detected. No action taken." | tee -a "$LOG_FILE"
fi
fi
echo "[$TIMESTAMP] Sleeping 5 minutes..." | tee -a "$LOG_FILE"
sleep 300
done