#!/bin/bash # ================================================ # SENTINELLA DI BACKUP (Gira su Pi-1 Master) # Controlla solo che il Pi-2 sia vivo. # ================================================ ENV_FILE="/home/daniely/.config/watchdog_pi2.env" if [ ! -f "$ENV_FILE" ]; then echo "Errore: file credenziali non trovato ($ENV_FILE)" >&2 exit 1 fi # shellcheck source=/dev/null source "$ENV_FILE" if [ -z "$BOT_TOKEN" ] || [ -z "$CHAT_ID" ]; then echo "Errore: BOT_TOKEN o CHAT_ID mancanti in $ENV_FILE" >&2 exit 1 fi # Il bersaglio da controllare (Pi-2 Backup) TARGET_IP="192.168.128.81" TARGET_NAME="🍓 Pi-2 (Backup & Monitor)" # File di stato specifico per questo controllo STATE_FILE="/tmp/pi2_watchdog.state" # Funzione per inviare messaggi Telegram con timeout breve send_telegram() { MSG="$1" curl -s --max-time 5 -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" -d chat_id="$CHAT_ID" -d text="$MSG" -d parse_mode="Markdown" > /dev/null 2>&1 } # Inizializza stato se non esiste if [ ! -f "$STATE_FILE" ]; then echo "UP" > "$STATE_FILE"; fi LAST_STATE=$(cat "$STATE_FILE") # --- IL PING --- # 3 tentativi, 2 secondi di timeout l'uno. # Basta che uno risponda per considerare il bersaglio UP. if ping -c 3 -W 2 "$TARGET_IP" > /dev/null 2>&1; then # === È ONLINE === if [ "$LAST_STATE" == "DOWN" ]; then send_telegram "✅ **RISOLTO: $TARGET_NAME è tornato ONLINE!**%0AIl monitoraggio di rete è di nuovo attivo." echo "UP" > "$STATE_FILE" fi else # === È OFFLINE === if [ "$LAST_STATE" == "UP" ]; then # Usiamo un'icona diversa per distinguerlo subito send_telegram "🛡️ **ALLARME SICUREZZA: $TARGET_NAME è OFFLINE!**%0A%0AAttenzione: Il sistema di monitoraggio principale (Super Watchdog) non sta funzionando." echo "DOWN" > "$STATE_FILE" fi fi