Estoy tratando de escribir un script que enumere todos los hosts en mi LAN (hay unos 20 de ellos) y escribe el estado de ping junto a cada host. Tengo el archivo de arrendamientos DHCP, así que tengo todas las IP (por ejemplo, 10.0.0.1, 10.0.0.2, etc.), todo lo que necesito es el estado de ping para cada host.
Entonces, mi script lanza un solo ping para cada host:
ping -c 1 10.0.0.1
Desafortunadamente, cuando un host está fuera de línea, el ping demora mucho tiempo. Lo comprobé man ping
, parece que hay dos opciones para configurar el tiempo de espera: -w deadline
y -W timeout
. Creo que estoy interesado en lo último.
Entonces intenté esto:
ping -c 1 -W 1 10.0.0.1
Pero esperar un segundo por host sin conexión todavía es demasiado largo. Intenté establecerlo por debajo de un segundo, pero no parece tener en cuenta el parámetro en absoluto:
ping -c 1 -W 0.1 10.0.0.1 # timeout option is ignored, apparently
¿Hay alguna manera de establecer el tiempo de espera en un valor inferior? Si no, ¿hay alguna alternativa?
Editar
- El sistema operativo es Debian Lenny.
- Los hosts que estoy intentando hacer ping son en realidad puntos de acceso. Están en la misma vlan y subred que los usuarios (por simplicidad de implementación y reemplazo). Es por eso que no quiero escanear toda la subred (con un
ping -b
por ejemplo).
Editar # 2
Acepté la fping
solución (gracias por todas las otras respuestas). Este comando hace exactamente lo que estaba buscando:
fping -c1 -t500 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4
Este comando tarda como máximo 500 ms en completarse y me da el estado de ping de todos los hosts a la vez:
10.0.0.1 : [0], 84 bytes, 5.71 ms (5.71 avg, 0% loss)
10.0.0.2 : [0], 84 bytes, 7.95 ms (7.95 avg, 0% loss)
10.0.0.3 : [0], 84 bytes, 16.1 ms (16.1 avg, 0% loss)
10.0.0.4 : [0], 84 bytes, 48.0 ms (48.0 avg, 0% loss)
10.0.0.1 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 5.71/5.71/5.71
10.0.0.2 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 7.95/7.95/7.95
10.0.0.3 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 16.1/16.1/16.1
10.0.0.4 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 48.0/48.0/48.0
En Debian Lenny, la instalación es trivial:
aptitude update
aptitude install fping