A prescindere dal tipo di utente Linux che sei (principiante o professionista), ci sono alcuni strumenti che devi conoscere. Una di queste utilità è Ping. In questo tutorial, discuteremo le basi di questo strumento usando alcuni esempi facili da capire. Ma prima di farlo, vale la pena ricordare che tutti gli esempi nell’articolo sono stati testati su una macchina Ubuntu 16.04 LTS.
Comando ping Linux
In termini più elementari, il comando ping permette di controllare se un host remoto è vivo e risponde. Ecco la sintassi dello strumento:
ping destination
Ed ecco come lo spiega la pagina man:
ping uses the ICMP protocol's mandatory ECHO_REQUEST datagram to elicit
an ICMP ECHO_RESPONSE from a host or gateway. ECHO_REQUEST datagrams
(``pings'') have an IP and ICMP header, followed by a struct timeval
and then an arbitrary number of ``pad'' bytes used to fill out the
packet.
ping6 is IPv6 version of ping, and can also send Node Information
Queries (RFC4620). Intermediate hops may not be allowed, because IPv6
source routing was deprecated (RFC5095).
Seguono alcuni esempi in stile Q&A che dovrebbero darvi una buona idea su come funziona il comando ping.
Q1. Come usare il comando ping?
L’uso di base è abbastanza facile – basta eseguire il comando ‘ping’ con la destinazione come input.
Per esempio:
ping howtoforge.com
Quello che segue è il risultato di questo comando prodotto sul mio sistema:
Nota che per default, il comando continuerà l’esecuzione finché non lo fermerai con Ctrl+C.
Q2. Come cambiare l’intervallo di tempo tra i pacchetti ping?
Di default, c’è un intervallo di un secondo tra i pacchetti ping. Tuttavia, se vuoi, puoi personalizzare questo ritardo usando l’opzione -i della linea di comando.
Per esempio, il seguente comando assicura un intervallo di 3 secondi:
ping -i 3 howtoforge.com
E il seguente comando invia pacchetti con un ritardo di mezzo secondo.
ping -i 0.5 howtoforge.com
Nota che solo il super-utente può impostare l’intervallo a valori inferiori a 0,2 secondi
Q3. Come cambiare la dimensione del pacchetto ping?
Di default, il numero di byte in un pacchetto ping è 56 (64 se si includono 8 byte di intestazione ICMP). Tuttavia, se vuoi, puoi cambiare questo valore, cosa che puoi fare usando l’opzione -s della linea di comando.
Per esempio, per inviare un pacchetto di 80 byte (88 compresa l’intestazione ICMP), usa il seguente comando:
ping -s 80 howtoforge.com
Q4. Come fare in modo che ping invii un certo numero di pacchetti?
Il comportamento predefinito di ping è quello di continuare a inviare pacchetti fino a quando non viene interrotto dall’utente. Tuttavia, se vuoi, puoi forzare ping a fermare l’esecuzione dopo l’invio di un certo numero di pacchetti. Questo si può fare usando l’opzione -c della linea di comando.
Per esempio, il seguente comando invierà 3 pacchetti e poi si fermerà.
ping -c 3 howtoforge.com
Q5. Come lanciare un flusso di pacchetti usando ping?
Sì, il comando ping offre anche un’opzione per lanciare un flusso di pacchetti. Questo si può fare usando l’opzione -f della linea di comando.
ping -f howtoforge.com
Ecco cosa dicono i documenti ufficiali su questa opzione:
For every ECHO_REQUEST sent a period ``.'' is
printed, while for ever ECHO_REPLY received a backspace is
printed. This provides a rapid display of how many packets are
being dropped. If interval is not given, it sets interval to
zero and outputs packets as fast as they come back or one hun?
dred times per second, whichever is more. Only the super-user
may use this option with zero interval.
Q6. Come fare in modo che ping stampi il timestamp prima di ogni riga?
C’è un’opzione (-D) che permette di fare questo. Il timestamp che viene stampato è una combinazione di tempo unix e microsecondi (come in gettimeofday).
ping -D howtoforge.com
Ecco uno screenshot di questa opzione in azione:
Q7. Come impostare un hard timeout per il ping?
Puoi specificare un tempo limite per l’uscita del ping. Questo si può fare usando l’opzione -w della linea di comando che richiede un valore numerico che rappresenta il numero di secondi.
Per esempio, il seguente comando ping si fermerà dopo 3 secondi:
ping -w 3 howtoforge.com
Ecco come la documentazione ufficiale spiega questa opzione:
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.
Q8. Come impostare un soft timeout per il ping?
Mentre l’opzione -w si assicura che il ping si fermi in ogni caso dopo la scadenza del termine, c’è un’altra opzione (-W, in maiuscolo) che fa fermare il ping ma solo quando non c’è risposta dal lato della destinazione.
ping -W 3 howtoforge.com
Ecco come la pagina man spiega il comportamento in questo caso:
Time to wait for a response, in seconds. The option affects only
timeout in absence of any responses, otherwise ping waits for
two RTTs.
Conclusione
Ping è uno strumento importante che quasi certamente viene utilizzato nel debug dei problemi legati alla rete. In questo tutorial, abbiamo discusso alcune caratteristiche principali (opzioni della linea di comando) di questa utility. Fate pratica con queste, e una volta finito, andate alla pagina man dello strumento per saperne di più.