Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I have a web application that runs through thousands of IP addresses and checks if they're online. Basically, if a server uses more than 250ms to respond, it's considered offline in our case. It would be an enormous timesaver if we could get the ping command to give up after about 300 ms, instead of what seems to be the minimum value of the -W parameter, 1 second.

share|improve this question

3 Answers 3

up vote 4 down vote accepted

Found a similar question out there, and the answer was a ping alternative called fping. Maybe it'll be of some use to you. http://serverfault.com/questions/200468/how-can-i-set-a-short-timeout-with-the-ping-command

share|improve this answer

From the man pages on ping it looks as though it is the -o to send only 1 packet...

ping -W 250 -o

That should return much more quickly also the -W parameter is in milliseconds, so that should send 1 packet and only wait 250ms for a response.

EDIT You Sure?:

$ 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
share|improve this answer
    
ping: invalid option -- 'o' –  Hubro Mar 30 '11 at 3:09
    
@codemonkey Are you sure? What Distro are you using? –  Joshkunz Mar 30 '11 at 3:26
    
Debian GNU/Linux 6.0 –  Hubro Mar 30 '11 at 3:31
    
My apologies I didn't realize that the darwin ping utility was so different, looks like fping should give you the added functionality you need. –  Joshkunz Mar 30 '11 at 3:38

Running on Mac Maverick. Pings 256 addresses in 39 seconds, i.e., 151ms / 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
$
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.