controllo connessione per script

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
bud
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 789
Iscrizione: domenica 11 giugno 2006, 20:31
Desktop: ubuntu
Distribuzione: Ubuntu 14.04 64bit
Località: Vicenza
Contatti:

controllo connessione per script

Messaggio da bud »

ciao a tutti, sempre io...
Sto cercando di fare uno script per l'installazione di alcuni driver e volevo fare una cosa dinamica che nel caso ci sia una connessione internet funzionante i driver vengono scaricati da internet (i più aggiornati), altrimenti vengono utilizzati quelli forniti con lo script.
Come faccio? Se qualche buon'anima mi posta la soluzione (in bash) di un then/else per i due casi con un pò di spiegazione per i comadi usati ne sarei grato.
In sintesi cerco una cosa: "controllo se è presente una connessione ad internet funzionante" "echo c'è" "echo non c'è".
Portatile: eMachines eM355 | Fisso: Packard Bell iMedia 8301
Avatar utente
bud
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 789
Iscrizione: domenica 11 giugno 2006, 20:31
Desktop: ubuntu
Distribuzione: Ubuntu 14.04 64bit
Località: Vicenza
Contatti:

Re: controllo connessione per script

Messaggio da bud »

Andando a naso con un ping si dovrebbe risolvere, con il comando

Codice: Seleziona tutto

ping -c 1 www.google.com | grep "received"
mi restituisce

Codice: Seleziona tutto

1 packets transmitted, 1 received, 0% packet loss, time 0ms
Un ping basta e avanza, solo che devo buttare tutto in then else, come si fa a fare che se ricevo "1 received" > "then faccio quello che devo fare" else (quindi 0 received) "faccio dell'altro?"
Portatile: eMachines eM355 | Fisso: Packard Bell iMedia 8301
koteko
Prode Principiante
Messaggi: 41
Iscrizione: domenica 20 luglio 2008, 0:56
Località: Roma
Contatti:

Re: controllo connessione per script

Messaggio da koteko »

All you need is awk  ;D

Penso che questo vada bene:

Codice: Seleziona tutto

var=`ping -c 1 www.google.com | grep "received" | awk '{print $4}'`

if [ $var = 1 ]; then 
     echo "Done"; 
else
     echo "Err"; 
fi
awk '{print $4}' prende in input (in questo caso da pipe) una stringa, la tokenizza con il separatore di default spazio e stampa il quarto valore :)
Avatar utente
bud
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 789
Iscrizione: domenica 11 giugno 2006, 20:31
Desktop: ubuntu
Distribuzione: Ubuntu 14.04 64bit
Località: Vicenza
Contatti:

Re: controllo connessione per script

Messaggio da bud »

Ok, per andare va, quasi, solo che nel caso non ci sia una connessione il risultato che mi mostra è

Codice: Seleziona tutto

ping: unknown host www.google.com
[: 8: 1: unexpected operator
Err
Però dici che il funziona lo stesso? Perchè non capisco se Err che stampa è perchè è un errore suo o perchè visto che non c'è stato il ping, la variabile var non può essere 1 e quindi il ciclo stampa Err (quindi potrei far andare lo stesso il programma se al posto di err ci metto ciò che mi serve?)
interessante però questo awk...
Portatile: eMachines eM355 | Fisso: Packard Bell iMedia 8301
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti