Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Dec 2001 13:16:06 -0500
From:      devin-freebsdquestions@rintrah.org
To:        Garance A Drosihn <drosih@rpi.edu>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: ping failure script
Message-ID:  <20011218131606.A81236@tharmas.rintrah.org>
In-Reply-To: <p05101004b84536ec64a9@[128.113.24.47]>; from drosih@rpi.edu on Tue, Dec 18, 2001 at 01:10:43PM -0500
References:  <113fc9110004.110004113fc9@mbox.com.au> <p05101004b84536ec64a9@[128.113.24.47]>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Dec 18, 2001 at 01:10:43PM -0500, Garance A Drosihn wrote:
> At 2:03 PM +1100 12/17/01, BSD Freak wrote:
> >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
> 
> Check the 'fping' module in ports.  It is designed to make this
> sort of checking much easier (particularly if you are checking
> multiple hosts).
> 

fping even provides a sample perl script to do exactly that sort of checking
in the man page.

#!/usr/bin/perl
       require 'open2.pl';

       $MAILTO = "root";

       $pid = &open2("OUTPUT","INPUT","/usr/local/sbin/fping -u");

       @check=("slapshot","foo","foobar");

       foreach(@check) {  print INPUT "$_\n"; }
       close(INPUT);
       @output=<OUTPUT>;

       if ($#output != -1) {
        chop($date=`date`);
        open(MAIL,"|mail -s 'unreachable systems' $MAILTO");
        print MAIL "\nThe following systems are unreachable as of: $date\n\n";
        print MAIL @output;
        close MAIL;
	}

--devin

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?20011218131606.A81236>