Como posso obter o tempo limite de ping abaixo de 1 segundo?

6

Eu tenho um aplicativo da web que percorre milhares de endereços IP e verifica se eles estão on-line. Basicamente, se um servidor usa mais de 250ms para responder, ele é considerado offline no nosso caso. Seria uma enorme economia de tempo se pudéssemos fazer com que o comando ping desistisse depois de cerca de 300 ms, em vez do que parece ser o valor mínimo do parâmetro -W, 1 segundo.

    
por Hubro 30.03.2011 / 03:05

3 respostas

7

Encontrei uma pergunta semelhante por aí, e a resposta foi uma alternativa de ping chamada fping. Talvez seja de alguma utilidade para você. link

    
por 30.03.2011 / 03:44
2

Nas páginas man do ping, parece que é o -o para enviar apenas 1 pacote ...

ping -W 250 -o

Isso deve retornar muito mais rapidamente também o parâmetro -W está em milissegundos, então deve enviar 1 pacote e esperar apenas 250ms por uma resposta.

EDIT Você tem certeza?:

$ ping -W 250 -o google.com
PING google.com (74.125.224.178): 56 data bytes
64 bytes from 74.125.224.178: icmp_seq=0 ttl=51 time=18.850 ms
--- google.com ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 18.850/18.850/18.850/0.000 ms
    
por 30.03.2011 / 04:56
0

Em execução no Mac Maverick. Pings 256 endereços em 39 segundos, ou seja, 151 ms / ping.

$cat netcheck
i=255
while
  test $i -ge 0
do
  address=192.168.1.$i
  if
    ping -i .1 -c 1 -W 50 $address > /dev/null
  then
    echo $address
  fi
  let i=$i-1
done
$time ./netcheck
192.168.1.255
192.168.1.254
192.168.1.241
192.168.1.216
192.168.1.174
192.168.1.148
192.168.1.108
192.168.1.102
192.168.1.0

real    0m38.653s
user    0m0.369s
sys 0m0.616s
$
    
por 21.05.2014 / 09:35