Files
loogle-scripts/scripts/pi1-master/watchdog_pi2.sh
T

57 lines
1.8 KiB
Bash
Executable File

#!/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