[RISOLTO] Script non affidabile

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

[RISOLTO] Script non affidabile

Messaggio 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???
Ultima modifica di Burroughs il mar 4 gen 2022, 22:50, modificato 1 volta in totale.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
brg
Linux 3.x
Linux 3.x
Messaggi: 580
Iscritto il: sab 12 mar 2011, 14:20
Slackware: 15.0
Kernel: 5.15.117
Desktop: KDE5
Località: Montecatini
Contatta:

Re: Script non affidabile

Messaggio 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.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Script non affidabile

Messaggio 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 ;)
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: [RISOLTO] Script non affidabile

Messaggio da Burroughs »

Ringrazio come al solito tutti per il prezioso supporto, problema risolto. \:D/ \:D/ \:D/
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Rispondi