Probablemente el comando ping es uno de los comandos de red más utilizados por SysAdmins. ping se utiliza principalmente para comprobar si un host remoto está activo o no. El host remoto puede ser un servidor web, un router o una raspberry pi en nuestra red local.

¿Cómo funciona el comando ping? Cuando ejecutamos este comando, lo que hacemos es enviar unos paquetes pequeños llamados ICMP al host remoto. Si el host remoto responde a esos paquetes, significa que está "activo" y obtendremos una salida en el comando.

💡
¿Sabes que significa PING? Significa Packet Internet Groper.

Veamos algunos ejemplos de ping.

Uso del comando ping

La mayoría de distribuciones de GNU/Linux vienen con este comando pre-instalado. Pero si algún día te encuentras que al ejecutar el comando te dice que no se encuentra, debes de saber que el paquete que debes de instalar es:

apt install iputils-ping

Para utilizar el comando, debemos de escribir el nombre del comando y un nombre del host. Este nombre de host puede ser un dominio o una IP.

Por ejemplo, hagamos un ping a fsf.org enviando paquetes ICMP de 56 bytes de tamaño:

$ ping fsf.org
PING fsf.org (209.51.188.174) 56(84) bytes of data.
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=1 ttl=54 time=108 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=2 ttl=54 time=108 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=3 ttl=54 time=108 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=4 ttl=54 time=108 ms
^C
--- fsf.org ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5007ms
rtt min/avg/max/mdev = 107.922/108.117/108.371/0.148 ms

Si dejamos el comando hacer su trabajo, lo tendremos todo el rato ejecutándose, por lo que deberemos de parar el proceso manualmente con CTRL + C.

Cuando se detiene el comando, obtenemos un resumen de la transmisión de los paquetes. Como puedes ver se ve una estadística indicando la cantidad de paquetes transmitidos, paquetes recibidos, paquetes perdidos y tiempo.

Ahora ya sabes ejecutar el comando, veamos algunas opciones interesantes.

Enviar N número de paquetes

Si quieres enviar un determinado número de paquetes y que se pare el proceso automáticamente, podemos utilizar la opción -c:

$ ping -c10 fsf.org
PING fsf.org (209.51.188.174) 56(84) bytes of data.
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=1 ttl=54 time=108 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=2 ttl=54 time=108 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=3 ttl=54 time=108 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=4 ttl=54 time=109 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=5 ttl=54 time=108 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=6 ttl=54 time=108 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=7 ttl=54 time=109 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=8 ttl=54 time=108 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=9 ttl=54 time=108 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=10 ttl=54 time=109 ms

--- fsf.org ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9013ms
rtt min/avg/max/mdev = 108.032/108.309/108.830/0.243 ms

Enviar paquetes durante un tiempo

También podemos enviar paquetes con ping durante un determinado tiempo. Por ejemplo durante 5 segundos o durante 1h.

💡
El tiempo deberá ser siempre en segundos, por lo que si por ejemplo necesitas hacer ping durante una hora, deberás de poner 3600 segundos.
$ ping -w5 fsf.org
PING fsf.org (209.51.188.174) 56(84) bytes of data.
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=1 ttl=54 time=108 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=2 ttl=54 time=109 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=3 ttl=54 time=114 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=4 ttl=54 time=108 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=5 ttl=54 time=110 ms

--- fsf.org ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4002ms
rtt min/avg/max/mdev = 108.089/109.832/113.724/2.036 ms

Modificar el tiempo de envío entre dos ping

Normalmente, entre ping y ping, el tiempo que pasa es un segundo. Por eso, en el ejemplo anterior se han enviado un total de 5 paquetes ya que hemos puesto que sean 5 segundos.

Pero podemos hacer que el tiempo entre paquetes sea menor, por ejemplo poniendo cada medio segundo:

ping -i 0.5 fsf.org

El valor mínimo para poner entre paquetes, es de 100ms:

Cambiar tamaño del paquete

También podemos cambiar el tamaño del paquete de ICMP para ello deberemos de usar la opción -s:

$ ping -s 100 fsf.org
PING fsf.org (209.51.188.174) 56(84) bytes of data.
100 bytes from www.fsf.org (209.51.188.174): icmp_seq=1 ttl=54 time=108 ms
100 bytes from www.fsf.org (209.51.188.174): icmp_seq=2 ttl=54 time=109 ms
100 bytes from www.fsf.org (209.51.188.174): icmp_seq=3 ttl=54 time=114 ms
100 bytes from www.fsf.org (209.51.188.174): icmp_seq=4 ttl=54 time=108 ms
100 bytes from www.fsf.org (209.51.188.174): icmp_seq=5 ttl=54 time=110 ms

--- fsf.org ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4002ms
rtt min/avg/max/mdev = 108.089/109.832/113.724/2.036 ms

Enviar paquetes audibles

¿Cómo? ¿Audibles? Si, podemos enviar un ping y escuchar cada vez que se envía un paquete. Esto lo podemos hacer con la opción -a:

$ ping -a fsf.org
💡
No tengo claro como funciona esto, pero dependiendo la terminal y la configuración de audio que tengas, deberías de escuchar un pequeño beep por cada paquete que se envía. Yo lo he probado con Kubuntu 22.04 y Hyper Terminal y se escuchaba un golpecito pequeño por cada línea.

¿Buscas otro comando?

¡Revisa nuestro "Diccionario de comandos para GNU/Linux"!

Diccionario de comandos para GNU/Linux

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación