[nycbug-talk] To ping or not to ping, that is the question...

Ray Lai nycbug at cyth.net
Sat Jul 8 08:02:02 EDT 2006

On Sat, Jul 08, 2006 at 07:41:36AM -0400, Isaac Levy wrote:
> Hi Ray,
> On Jul 8, 2006, at 7:31 AM, Ray Lai wrote:
> >> Inside the box:
> >> - to my knowledge, (and digging through the man pages), ping cannot
> >> bind itself to a particular network interface, which is a problem on
> >> boxes with multiple interfaces, with IP's all on the same subnet.
> >> (ping just finds the first IP route, and pings out on that interface.
> >
> > NetBSD and OpenBSD's ping allows this with the -I flag.  FreeBSD's
> > allows it with the -S flag.
> Well I stand corrected, happily :)
> >
> >> Outside the box:
> >> - to my knowledge, (and digging through the man pages), ping does not
> >> have any options which let the utility return some sort of boolean
> >> value for weather or not a packet was returned.
> >
> > It returns 0 if a packet was received and other values otherwise,
> > depending on the operating system.  You'll probably want to use the
> > -c flag.
> >
> > -Ray-
> Ok- so now here's my new question, how can I get ping to return less  
> verbose stuff, a simple integer returned would be way nicer to  
> programatically deal with (vs. having to parse the text)- which in  
> the context of my app, is all just verbose garbage for me to deal  
> with...
> Additionally, I'd like to be able to set some kind of response  
> timeout, (under 1 second)?

Just do:

ray at x[~] COUNT=1; WAIT=1; ping -c "$COUNT" -w "$WAIT" google.com >/dev/null && echo success || echo fail
ray at x[~] COUNT=1; WAIT=1; ping -c "$COUNT" -w "$WAIT" >/dev/null && echo success || echo fail

Unfortunately the -w flag only accepts integers, so the lowest
timeout you can set is one second.


More information about the talk mailing list