• 14 Febbraio 2008
  • 1 Stella2 Stelle3 Stelle4 Stelle5 Stelle 1 voti

Monitorare la connessione a internet con Linux

In questo tutorial vediamo come costruire un semplice script linux per monitorare costantemente lo stato della proprio connessione ADSL. E’ un programma che può tornare utile nei casi in cui si abbiano delle difficoltà con la connessione, per avere un riscontro oggettivo dei problemi e supportare meglio il provider stesso nella gestione del problema. Vediamo come fare passo passo.

1 - Monitoraggio

Per verificare se la connessione funziona bene utilizziamo un programma molto diffuso che si chiama curl. Curl è un semplice tool testuale che effettua una connessione a un qualcunque sito “come se” fosse un browser, restituendo come output il codice html ricevuto dal sito stesso. Tramite varie opzioni che possiamo passare al programma (vi assicuro che ce ne sono tantissime) è possibile filtrare il contenuto ricevuto, ad esempio (come faremo noi) stampando solo l’header del pacchetto ricevuto. La sintassi per il comando curl è questa:

curl --head --max-time 5 www.google.it

Abbiamo in questo caso utilizzato google come sito di test ma possiamo decidere in maniera arbitraria quale utilizzare. Prima di proseguire perfezioniamo il comando, inserendo delle modifiche volte a catturare solo la parte che ci interessa dell’header, ossia la riposta.

curl --head --max-time 5 www.google.it 2>/dev/null | head -1

In questo modo abbiamo soppresso tutti i messaggi di notifica e di errore, lasciando solo la risposta del server. Tale risposta è, nel caso vada tutto bene, una stringa del tipo “200 OK”. Anche se ci fosse un messaggio di errore, ad es. “404 Not found”, per noi va sempre bene perché significa che il server ci ha risposto, quindi la connessione è a posto. Quando la connessione non funziona bene, il comando restituisce una stringa vuota.

2 - Creazione file di log

Una volta avuta la risposta dobbiamo memorizzare il risultatao, possibilmente corredato da data e ora, a un opportuno file di log (ad esempio un file .csv). Per fare ciò possiamo utilizzare la seguente sintassi:

echo "`date \"+%d/%m/%Y %H.%M.%S\"`;`curl --head --max-time 5 www.tiscali.it 2>/dev/null | head -1`" >> /home/scuro/testrete/testadsl.csv

che ci permette di creare una riga da inserire in un file CSV, del tipo “14/02/2008 16.11.51;HTTP/1.1 200 OK” in caso di buona connessione, oppure “14/02/2008 16.11.51;” in caso di cattiva connessione.

3 - Esecuzione automatica

E’ bene mettere lo script in esecuzione automatica, ma purtroppo crontab permette esecuzioni ogni minuto come minimo, che è un po’ troppo per i nostri gusti. A noi serve una grana più fine, ad esempio 5 secondi. Per ottenere il risultato è meglio procedere diversamente: a ogni test facciamo uno sleep di 5 secondi, e ripetiamo ciclicamente. Però se facciamo così c’è il problema che, se per qualche motivo lo script dovesse andare in crash, perderemmo il monitoring della rete senza accorgercene. Per questo motivo è meglio mettere comunque lo script a crontab, però bisogna fare un controllo preventivo: dobbiamo verificare che non ci siano altre istanze del programma in esecuzione. Possiamo usare una sintassi simile a questa:

PROGRAM_NAME="`basename $0`"

NUM_PROC=`ps | grep -o -c $PROGRAM_NAME`
#echo $NUM_PROC

if [ $NUM_PROC -gt 2 ] ; then
echo "Programma in esecuzione"
exit 1
fi

che controlla se ci sono altre istanze del programma in esecuzione. In questo caso è statao stampato un messaggio a video in caso di programma già in esecuzione anche se è inutile, dovendo il programma girare poi a crontab.

4 - Mettiamo tutto insieme

Ecco come potrebbe essere lo script definitivo:

#!/bin/bash

PROGRAM_NAME="`basename $0`"

NUM_PROC=`ps | grep -o -c $PROGRAM_NAME`
#echo $NUM_PROC

if [ $NUM_PROC -gt 2 ] ; then
echo "Programma in esecuzione"
exit 1
fi

while true; do
echo "`date \"+%d/%m/%Y %H.%M.%S\"`;`curl --head --max-time 5 www.google.it 2>/dev/null | head -1`" >> /home/nomeutente/testadsl.csv
sleep 5
done

Un possibile output è questo:

...
14/02/2008 16.11.36;HTTP/1.1 200 OK
14/02/2008 16.11.41;HTTP/1.1 200 OK
14/02/2008 16.11.46;HTTP/1.1 200 OK
14/02/2008 16.11.51;HTTP/1.1 200 OK
14/02/2008 16.11.56;HTTP/1.1 200 OK
14/02/2008 16.12.01;HTTP/1.1 200 OK
14/02/2008 16.12.07;HTTP/1.1 200 OK
14/02/2008 16.12.12;HTTP/1.1 200 OK
14/02/2008 16.12.17;HTTP/1.1 200 OK
14/02/2008 16.12.23;HTTP/1.1 200 OK
...

RSScommenti all'articolo (0)

scrivi commento

Nome:

Email:

Url:


  • ARTICOLI CORRELATI

E’ con immensa soddisfazione che comunico che mondoinformatico.info ha superato i 1.000 articoli pubblicati!

Ebbene si, sembra incredibile ma tantissimi di voi hanno scritto molti articoli, alcuni molto interessanti, altri meno ma tutti originali, unici e in tema.

Il traguardo…

Ultimi Articoli Commenti

Inserisci il tuo indirizzo e-mail per rimanere aggiornato sulle novità del sito.

  • SONDAGGIO
Che notizie vorresti trovare su mondoinformatico?
Visualizza risultati
  • CHATTING

utenti online

Ci sono attualmente 0 utenti e 1 ospiti collegati