Ho il rasp collegato alla rete via wifi, ho il problema che se per qualsiasi motivo perde la connessione wifi, riavvio router o che ne so.... il rasp non è più in grado di ricollegarsi. Dato che è in una posizione dove mi è impossibile collegare monitor tastiera o altro, lo devo brutalmente spegnere e riavviare togliendo corrente... un pò una scocciatura... allora ho pensato un modo per evitare questo macchioso passaggio.
Ho raccolto pezzi di codice qua e la e creato lo script per monitorare con un ping la connessione al router, qui sotto il codice:
Codice: Seleziona tutto
#!/bin/sh
HOSTS="192.168.x.x"
COUNT=15
for myHost in $HOSTS
do
count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
if [ $count -eq 0 ]; then
# 100% failed
curl --request GET "http://api.rpinotify.it/notification/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXxxxxxxxxxxxxxxxxuaTMxIn0.oH5gzs07RyYNmj_4F69Y_GvzcIZ1Sl$
echo "Host : $myHost is down (ping failed) at $(date)"
reboot
fi
curl --request GET "http://api.rpinotify.it/notification/eyJhbGciOiJIUzI1NiIsInxxxxxxxxxxxxxtlbiI6ImdlbWluaTMxIn0.oH5gzs07RyYNmj_4F69Y_GvzcIZ1Sl$
echo "Host is ok"
done
In sostanza fa un ping verso il router con 15 pacchetti, se da 100% fail, riavvia il rasp. se anche un solo pacchetto va a buon fine, 95% fail, non fa il riavvio. questo margine per evitare eventuali interferenze temporanee del wifi che darebbero un falso down del router.
Avendo tempo da perdere, ho infilato dentro anche le notifiche telegram, tanto per provare... in effetti ha poco senso perchè se il router o down, le notifiche telegram non possono partire.
Comunque, metto tutto sotto crontab diciamo per un monitoraggio ogni 30 minuti, e qui la cosa mi diventa un pò più oscura e ambigua. nel crontab dove c'è gia configurato il backup via ftp funzionante, aggiungo la riga per lo script del ping, qui sotto il codice:
Codice: Seleziona tutto
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
1 0 * * * root /usr/bin/ramlog flush >/dev/null 2>&1
0 0 * * 0 root /var/www/MyScripts/ftpbackup.sh
30 * * * * root /var/www/MyScripts/pingtest.sh
#
Provo a riavviare il router ieri notte, mi aspettavo questa mattina che fosse tornato on line il rasp, e invece no! mi sono un pò perso....
Non sono riuscito a tirare fuori dei log per capire se il crontab stia lavorando, allora ho pensato di infilare dentro quelle notifiche telegram, e finalmente ho cominciato a riceve le notifiche di host ok. un pò ballerine però... tre volte sono arrivate a 10 minuti circa una dall'altra, poi un buco di 1 ora e un'altra.
Non capisco quale sia il crontab che lavora, ho visto da root al comando crontab -l non compare alcun crontab configurato, e neanche dall'utente pi. allora ho configurato da root con crontab -e la schedulazione ad ogni minuto, ma niente... apparentemente sembra funzioni il crontab dove è configurato il anche backup...
in questo momento ha ripreso con la cadenza giusta, 2 messaggi su telegram.... booo dovrebbe funzionare, questa sera riprovo a riavviare il router.
Magari è un'idea che torna utile anche ad altri...