Verificare se un sistema è connesso a Internet con Bash

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.

Torna su