Pagina 1 di 1

[RISOLTO] Script non affidabile

Inviato: gio 30 dic 2021, 12:02
da Burroughs
Buona antivigilia a tutti.
Vengo al sodo: nella mia rete locale ho un Raspberry Pi che, fra le altre cose, uso per controllare un decoder Linux Zgemma H2.
In pratica, essendo questi decoder molto sensibili a freeze di incerta origine, ho impostato uno script che ogni dieci minuti mi controlla se l'host è online oppure no.
Eccolo:

Codice: Seleziona tutto

#!/bin/bash
# Script di controllo della connettività del decoder Zgemma H2S

IP=mio_ip_privato
MAIL=mia_email_pubblica

ping -c 5 $IP > /dev/null 2>&1
if [ $? -ne 0 ]
then
   # Use your favorite mailer here:
 mail -s "Ogetto e-mail di notifica" $MAIL <<< 'Corpo dell'email di cui prima'
fi
Lo script l'ho programmato per eseguirlo ogni dieci minuti.
Ora, la cosa strana è che talvolta, una-due volte ogni tre ore, qualche altra volta più spesso, ricevo un'email che mi segnala il decoder come freezato quando invece è perfettamente funzionante.
C'è qualcosa nello script che, secondo voi, dovrei cambiare???

Re: Script non affidabile

Inviato: ven 31 dic 2021, 15:06
da brg
Se ho capito bene il tuo script controlla che non ci siano pacchetti persi nel ping, mentre dovrebbe verificare che non tutti i pacchetti vadano persi. Che un pacchetto o due possano andar persi su cinque non significa che la destinazione è irraggiungibile.

Codice: Seleziona tutto

if [ $? -ne 0 ]
Io farei:

Codice: Seleziona tutto

if [ $? -eq 5 ]
Dove 5 è il numero di pacchetti inviati, che sarebbe meglio parametrizzare.

Re: Script non affidabile

Inviato: ven 31 dic 2021, 20:52
da targzeta
Dal man di ping:
-w deadline
Specify a timeout, in seconds, before ping exits regardless of how many packets have been sent or received. In this case ping does not stop after count packet are sent, it waits either for deadline expire or until count probes are answered or for some error notification from network.
...
If ping does not receive any reply packets at all it will exit with code 1. If a packet count and deadline are both specified, and fewer than count packets are received by the time the deadline has arrived, it will also exit with code 1. On other error it exits with code 2. Otherwise it exits with code 0. This makes it possible to use the exit code to see if a host is alive or not.
Io proverei ad usare anche l'opzione -w

Emanuele

P.S. invece di controllare la variabile $?, puoi anche fare semplicemente

Codice: Seleziona tutto

if ! ping -c 5 $IP >& /dev/null
Nota anche il redirect di stdout e stderr su /dev/null ;)

Re: [RISOLTO] Script non affidabile

Inviato: mar 4 gen 2022, 22:52
da Burroughs
Ringrazio come al solito tutti per il prezioso supporto, problema risolto. \:D/ \:D/ \:D/