Verificare se un sistema è connesso a Internet è un'operazione comune negli script Bash. Esistono vari metodi per farlo, ma non tutti sono affidabili. In questo articolo, vedremo il metodo migliore per effettuare questa verifica in modo efficace.
Utilizzare ping
Uno dei metodi più semplici per verificare la connessione è usare ping
. Questo comando invia pacchetti ICMP a un host remoto e attende una risposta.
#!/bin/bash
if ping -c 1 -W 2 8.8.8.8 &> /dev/null; then
echo "Sei online."
else
echo "Non sei connesso a Internet."
fi
Questo script invia un singolo pacchetto (-c 1
) all'IP pubblico di Google (8.8.8.8) e attende una risposta entro 2 secondi (-W 2
). Se il ping ha successo, il sistema è online.
Utilizzare curl o wget
Alcune reti potrebbero bloccare il traffico ICMP, rendendo il metodo basato su ping
inaffidabile. Un'alternativa è utilizzare curl
o wget
per verificare se un sito web è raggiungibile.
#!/bin/bash
if curl -s --head --request GET https://www.google.com | grep "200 OK" > /dev/null; then
echo "Sei online."
else
echo "Non sei connesso a Internet."
fi
Questo script effettua una richiesta HTTP a Google e cerca nella risposta lo stato "200 OK".
Combina più metodi per maggiore affidabilità
Per una verifica più robusta, è possibile combinare entrambi i metodi:
#!/bin/bash
if ping -c 1 -W 2 8.8.8.8 &> /dev/null || curl -s --head https://www.google.com | grep "200 OK" > /dev/null; then
echo "Sei online."
else
echo "Non sei connesso a Internet."
fi
In questo modo, anche se il ping non funziona, la verifica tramite HTTP può ancora confermare la connessione.
Conclusione
Verificare la connessione a Internet in Bash può essere fatto in diversi modi. Utilizzare sia ping
che curl
garantisce un controllo più affidabile, adattandosi a diverse condizioni di rete.