Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Dec 2001 10:14:29 +0100
From:      Cliff Sarginson <cliff@raggedclown.net>
To:        FreeBSD Questions <freebsd-questions@FreeBSD.ORG>
Subject:   Re: ping failure script
Message-ID:  <20011217091429.GA1352@raggedclown.net>
In-Reply-To: <113fc9110004.110004113fc9@mbox.com.au>
References:  <113fc9110004.110004113fc9@mbox.com.au>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Dec 17, 2001 at 02:03:48PM +1100, BSD Freak wrote:
> 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

ping -q -c 3 -w 1 my.host.com >/dev/null
[ $? -ne 0 ] && { echo "Link is DOWN!!" | mail me@mycompany.com"; }

Only problem with this is that you will get the message consequent on the
effect of the last ping.

Perhaps you could better try it this way:

FAIL=0
for LOOP in 1 2 3
  do
  ping -q -c 1 -w 1 my.host.com >/dev/null
  [ $? -eq 0 ] && { break; }
  FAIL=$LOOP
done

case $LOOP in
0)      :
        ;;
1|2)    echo "Link is flaky" | mail me@mycompany.com;
        ;;
3)      echo "Link is down" | mail me@mycompany.com;
        ;;
*)      ;;
esac

So if ping number 1 succeeds all is assumed ok.
If ping 1 or 2 fail but ping 3 succeeds, there may be a problem
If all 3 pings fail assume your link is down.

But this is also not exactly what you asked for, may give you 
a hint though.

-- 
Regards
Cliff



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?20011217091429.GA1352>