У меня есть веб-приложение, которое просматривает тысячи IP-адресов и проверяет их наличие. По сути, если сервер использует более 250 мс для ответа, в нашем случае это считается автономным. Было бы огромной экономией времени, если бы мы могли заставить команду ping отказаться примерно через 300 мс, вместо того, что кажется минимальным значением параметра -W, 1 секунда.
3 ответа
7
Нашел похожий вопрос там, и ответом была альтернатива ping под названием fping. Может быть, это будет вам полезно. https://serverfault.com/questions/200468/how-can-i-set-a-short-timeout-with-the-ping-command
2
Из man-страниц ping выглядит так, как будто это -o для отправки только 1 пакета ...
ping -W 250 -o
Это должно вернуть намного быстрее, также параметр -W в миллисекундах, так что следует отправить 1 пакет и ждать ответа только 250 мс.
РЕДАКТИРОВАТЬ Вы уверены ?:
$ 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
0
Работает на Mac Maverick. Пингует 256 адресов за 39 секунд, то есть 151мс / пинг.
$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
$