Riorganizzazione struttura repository: separazione servizi e script
This commit is contained in:
56
scripts/pi2-backup/dhcp-watchdog.sh
Executable file
56
scripts/pi2-backup/dhcp-watchdog.sh
Executable file
@@ -0,0 +1,56 @@
|
||||
#!/bin/bash
|
||||
|
||||
# --- CONFIGURAZIONE ---
|
||||
MASTER_IP="192.168.128.80"
|
||||
CONFIG_FILE="/etc/pihole/pihole.toml"
|
||||
LOG_FILE="/var/log/dhcp-watchdog.log"
|
||||
|
||||
# Funzione per il logging
|
||||
log_message() {
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
|
||||
echo "$1"
|
||||
}
|
||||
|
||||
# Funzione ROBUSTA v2 per leggere lo stato
|
||||
# Usa i campi ($1, $2) per ignorare gli spazi di indentazione
|
||||
is_dhcp_active() {
|
||||
val=$(awk '/^\[dhcp\]/{flag=1} flag && $1=="active" && $2=="=" {print $3; exit}' "$CONFIG_FILE")
|
||||
echo "$val"
|
||||
}
|
||||
|
||||
# Funzione per ATTIVARE (sed robusto)
|
||||
enable_dhcp() {
|
||||
# Cerca nel blocco [dhcp] e sostituisce mantenendo l'indentazione (\1)
|
||||
sudo sed -i '/^\[dhcp\]/,/^\[/ s/^\(\s*\)active\s*=\s*false/\1active = true/' "$CONFIG_FILE"
|
||||
sudo systemctl restart pihole-FTL
|
||||
}
|
||||
|
||||
# Funzione per DISATTIVARE (sed robusto)
|
||||
disable_dhcp() {
|
||||
sudo sed -i '/^\[dhcp\]/,/^\[/ s/^\(\s*\)active\s*=\s*true/\1active = false/' "$CONFIG_FILE"
|
||||
sudo systemctl restart pihole-FTL
|
||||
}
|
||||
|
||||
# --- LOGICA DI CONTROLLO ---
|
||||
|
||||
if ping -c 3 -W 5 "$MASTER_IP" &> /dev/null; then
|
||||
# MASTER VIVO
|
||||
CURRENT_STATUS=$(is_dhcp_active)
|
||||
if [ "$CURRENT_STATUS" == "true" ]; then
|
||||
log_message "RECOVERY: Master tornato online. Disattivo DHCP Backup."
|
||||
disable_dhcp
|
||||
log_message "STATO: DHCP disattivato."
|
||||
fi
|
||||
else
|
||||
# MASTER FORSE MORTO
|
||||
sleep 30
|
||||
if ! ping -c 3 -W 5 "$MASTER_IP" &> /dev/null; then
|
||||
# CONFERMATO MORTO
|
||||
CURRENT_STATUS=$(is_dhcp_active)
|
||||
if [ "$CURRENT_STATUS" == "false" ]; then
|
||||
log_message "EMERGENZA: Master irraggiungibile. Attivo DHCP Backup."
|
||||
enable_dhcp
|
||||
log_message "STATO: DHCP ATTIVO."
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
Reference in New Issue
Block a user