Estou tentando escrever um script que lista todos os hosts da minha LAN (há cerca de 20 deles) e grava o status de ping ao lado de cada host. Eu tenho o arquivo de concessões DHCP, então tenho todos os IPs (por exemplo, 10.0.0.1, 10.0.0.2 etc.), tudo o que preciso é o status de ping para cada host.
Portanto, meu script lança um único ping para cada host:
ping -c 1 10.0.0.1
Infelizmente, quando um host está offline, o ping demora muito tempo. Eu verifiquei man ping
, parece haver duas opções para definir o atraso do tempo limite: -w deadline
e -W timeout
. Eu acho que estou interessado no último.
Então eu tentei isso:
ping -c 1 -W 1 10.0.0.1
Mas esperar um segundo por host offline ainda é muito longo. Tentei configurá-lo para menos de um segundo, mas ele não parece levar em consideração o parâmetro:
ping -c 1 -W 0.1 10.0.0.1 # timeout option is ignored, apparently
Existe uma maneira de definir o tempo limite para um valor menor? Caso contrário, existem alternativas?
Editar
- O sistema operacional é o Debian Lenny.
- Os hosts que estou tentando executar ping são, na verdade, pontos de acesso. Eles estão na mesma vlan e sub-rede que os usuários (para simplificar a implantação e a substituição). É por isso que não quero varrer toda a sub-rede (com um
ping -b
por exemplo).
Editar # 2
Aceitei a fping
solução (obrigado por todas as outras respostas). Este comando faz exatamente o que eu estava procurando:
fping -c1 -t500 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4
Este comando leva no máximo 500ms para ser concluído e fornece o status de ping de todos os hosts de uma só 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
No Debian Lenny, a instalação é trivial:
aptitude update
aptitude install fping