Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!munnari.OZ.AU!news.hawaii.edu!ames!tulane.edu!cpk-news-feed4.bbnplanet.com!news.fsu.edu!gold.acns.fsu.edu!davis
From: "Douglass E. Davis" <davis@gold.acns.fsu.edu>
Newsgroups: comp.sys.sun.admin,alt.sys.sun,comp.unix.bsd.misc,comp.unix.programmer,comp.unix.bsd.bsdi.misc,comp.unix.admin
Subject: Re: ping script
Date: Wed, 17 Jul 1996 15:09:36 -0400
Organization: Florida State University
Lines: 128
Message-ID: <Pine.SOL.3.93.960717150307.13904B-100000@gold.acns.fsu.edu>
References: <Pine.SOL.3.93.960702171209.4062B-100000@gold.acns.fsu.edu> <4sbfat$ll@keyhole.west.spy.net> <4sj76n$9fp@hptemp1.cc.umr.edu>
NNTP-Posting-Host: gold.acns.fsu.edu
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
In-Reply-To: <4sj76n$9fp@hptemp1.cc.umr.edu>
Xref: euryale.cc.adfa.oz.au comp.sys.sun.admin:70715 alt.sys.sun:10419 comp.unix.bsd.misc:1256 comp.unix.programmer:39707 comp.unix.bsd.bsdi.misc:4329 comp.unix.admin:45008
Thanks for all the help. I recieved about 10 ping scripts that could do
the job. I combined them and modified them into one gigantic ping script.
I have listed it at the end, it is very useful. If any one has any
suggestions or modifications, please tell me.
here is what the ipnums file looks like:
40.33.1.1
168.223.20.130
128.186.2.206
here is what the ipdesc file looks like:
40.33.1.1 lilly.com Eli LIlly & Co.
168.223.20.130 cis.famu.edu A FAMU computer
128.186.2.206 acns.fsu.edu A Florida State computer
Here is what the script looks like (I call it sonar):
#!/bin/sh
# by: Douglass Davis and others
# to run this script type: sh sonar & or ./sonar &
#
# This script will ping many computers
# and beep, send a page and mail when
# a computer does not respond.
#
# a file called ipnums must be in the current
# directory. It must contain the
# ip numbers of the hosts to ping
#
# a file called ipdesc should be in the
# current directory with
# a list of ip numbers and descriptions.
# of the computers being pinged. The
# numbers should correspond to those in the ipnums
# file
#
# the local host's ip address should be
# first in the ip file to check local
# connections first.
#
# this script will create a file called
# sonar.log in the current directory
#names of important people to mail, separated by spaces.
MAIL_TO="yourname@youraddress.com ddavis@cis.famu.edu"
while [ /usr/bin/true ]
do
for ip in `cat ipnums`
do
# do 3 pings. Even if there is a good connection,
# there is a chance a ping may not respond.
ping $ip > /dev/null 2>&1
rc1=$?
ping $ip > /dev/null 2>&1
rc2=$?
ping $ip > /dev/null 2>&1
rc3=$?
# if no answer, then take action
if [ $rc1 != 0 ] && [ $rc2 != 0 ] && [ $rc3 != 0 ]
then
# first get the description from the ipdesc file
desc=`grep -w $ip ipdesc`
if [ $? != 0 ]
then
desc=`echo $ip: no description available`
fi
desc=`echo \"$desc\"`
# mail important people
echo "`date` PING TO $desc FROM `hostname` DID NOT RETURN" | fmt | mail -s "`hostname` communications error" $MAIL_TO
# do a display to the screen
echo sonar: ping to $desc did not return
echo sonar: I will continue trying until I get an answer
echo
# add to log
echo `date`: PING TO $desc DID NOT RETURN | fmt >> sonar.log
echo >> sonar.log
# ping every 30 seconds, until we get an answer
rc=-1
while [ $rc != 0 ]
do
/usr/sbin/ping $ip > /dev/null 2>&1
rc=$?
sleep 30
done
# The ping worked
# mail important people
echo "`date` PING TO $desc from `hostname` RETURNED communications recovered" | fmt | mail -s "`hostname` communications recovery" $MAIL_TO
# do a display to the screen
echo sonar: ping to $desc returned, communications recovered
# add to log
echo `date`: echo PING TO $desc RETURNED | fmt >> sonar.log
echo >> sonar.log
fi
done
#wait 5 Minutes, and do checks again
sleep 300
-one