Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Dec 2001 20:19:31 -0800
From:      "Crist J . Clark" <cjc@FreeBSD.ORG>
To:        Ryan Thompson <ryan@sasknow.com>
Cc:        BSD Freak <bsd-freak@mbox.com.au>, FreeBSD Questions <freebsd-questions@FreeBSD.ORG>
Subject:   Re: ping failure script
Message-ID:  <20011216201931.E15624@blossom.cjclark.org>
In-Reply-To: <20011216211234.Y12124-100000@catalyst.sasknow.net>; from ryan@sasknow.com on Sun, Dec 16, 2001 at 09:31:53PM -0600
References:  <113fc9110004.110004113fc9@mbox.com.au> <20011216211234.Y12124-100000@catalyst.sasknow.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Dec 16, 2001 at 09:31:53PM -0600, Ryan Thompson wrote:
> BSD Freak wrote to FreeBSD Questions:
> 
> > Hi all,
> >
> > I want to run a shell script from cron that has the following
> > logic but I am totally unsure where to start with the syntax. It
> > goes like this:
> >
> > IF 3 consecutive pings to my.host.com fail  THEN
> > echo "Link is DOWN!!" | mail me@mycompany.com
> > end
> 
> How about this?
> 
> #!/bin/sh
> 
> PING="/sbin/ping -q -c 3"
> 
> if $PING $1 >/dev/null 2>&1; then
> 	echo "$1 is up"
> else
> 	echo "$1 is down"
> fi
> 
> 
> ping will only fail if no replies are received.
> The above example could use some better input error handling,
> but otherwise, it should do what you want.

Nope, ping(1) will never die if it doesn't get the responses. You need
to add the '-w' option. Something like,

  PING="/sbin/ping -q -c 3 -w 10"

Should do it.
-- 
"It's always funny until someone gets hurt. Then it's hilarious."

Crist J. Clark                     |     cjclark@alum.mit.edu
                                   |     cjclark@jhu.edu
http://people.freebsd.org/~cjc/    |     cjc@freebsd.org

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011216201931.E15624>