Eu estou tentando escrever um script que lista todos os hosts na minha LAN (há cerca de 20 deles) e escreve o status do ping ao lado de cada host. Eu tenho o arquivo de concessões de DHCP, então eu tenho todos os IPs (digamos, 10.0.0.1, 10.0.0.2, etc.), tudo que eu preciso é o status do ping para cada host.
Então, meu script inicia um único ping para cada host:
ping -c 1 10.0.0.1
Infelizmente, quando um host está offline, o ping demora muito tempo para expirar. Eu verifiquei man ping , parece haver duas opções para definir o atraso de 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 off-line ainda é muito longo. Tentei defini-lo para menos de um segundo, mas não parece levar em conta 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? Se não, existem alternativas?
Editar
- O O.S. é o Debian Lenny.
- Os hosts que estou tentando fazer ping são, na verdade, pontos de acesso. Eles estão na mesma vlan e sub-rede que os usuários (para simplicidade de implantação e substituição). É por isso que não quero verificar toda a sub-rede (com
ping -b , por exemplo).
Editar # 2
Aceitei a solução fping (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
Esse comando leva no máximo 500ms para ser concluído e me fornece o status do 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