[nycbug-talk] To ping or not to ping, that is the question...
Ray Lai
nycbug at cyth.net
Sat Jul 8 07:33:39 EDT 2006
On Sat, Jul 08, 2006 at 07:11:22AM -0400, Isaac Levy wrote:
> Hey All,
>
> I'm trying to ping. :)
>
> Ok, so the situation is this- I'm attempting to determine weather or
> not a box is 'live', using some kind of external network probe
> (ping), hopefully determining if the box is up within 10 seconds or
> so- so my program can decide to do other things.
>
> With that, the ping utility was not really designed to accommodate
> this need, on several counts:
>
> 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.
> 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-
> If I'm wrong on either of these points, I'd love for someone to tell
> me different- it would get me out of some tedious work here...
>
> (sidenote- I know the implications of my question are a bit heavy,
> insomuch as there's *so much* that can happen to make a given ping
> fail, network latency, tons of factors... so using ping to determine
> weather a box is 'up' is more of an ontological debate than a simple
> yes or no answer...)
>
> --
> What I'm planning on doing, to solve my problem(s), is to write a
> small utility into my application which creates a network socket on a
> specified network interface, and pings from an IP assigned to it-
> returning boolean values to my program, so it can decide what to do
> (a fail-over type application). This can be done pretty simply in
> Python (or similar), I'd just rather use a core system utility and
> keep it all in nice portable shell scripts...
>
> Is this a sane idea, or are there some other ping type utilities out
> there that people know and love to do the same thing? (Note- I'm not
> looking for some kind of Nagios/etc... type solution, I'm looking for
> a small stable widget to incorporate into my program).
>
> Any thoughts, urls, chiding, anything- much appreciated...
> (Arp related tools would also be a fine solution here, since I'm
> really focused on layer 2 [or perhps 3, IP], not services on the
> upper layers...)
More information about the talk
mailing list