Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!munnari.OZ.AU!news.ecn.uoknor.edu!news.ysu.edu!odin.oar.net!malgudi.oar.net!rclnews.eng.ohio-state.edu!magnus.acs.ohio-state.edu!math.ohio-state.edu!uwm.edu!news-res.gsl.net!news.gsl.net!news.mathworks.com!newsfeed.internetmci.com!newsfeeder.servtech.com!murphy2.servtech.com!news
From: sanjay <sanjay@servtech.com>
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, 03 Jul 1996 21:16:44 -0400
Organization: ServiceTech, Inc.
Lines: 81
Message-ID: <31DB1B7C.38CD450E@servtech.com>
References: <Pine.SOL.3.93.960702171209.4062B-100000@gold.acns.fsu.edu>
NNTP-Posting-Host: smog.roc.servtech.com
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="------------40DFC53C226FBCD85DDDF94E"
X-Mailer: Mozilla 2.0 (X11; I; Linux 1.2.8 i586)
To: "Douglass E. Davis" <davis@gold.acns.fsu.edu>
Xref: euryale.cc.adfa.oz.au comp.sys.sun.admin:69949 alt.sys.sun:10363 comp.unix.bsd.misc:1205 comp.unix.programmer:39084 comp.unix.bsd.bsdi.misc:4223 comp.unix.admin:44449
This is a multi-part message in MIME format.
--------------40DFC53C226FBCD85DDDF94E
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Douglass E. Davis wrote:
>
> I am trying to make a script that will ping a computer every few minutes
> and run a program if there is no answer.
>
> I was thinking about making a C program to do the same thing. it would
> just do a :
> system("ping blazay > datafile ")
> then it would read datafile to see if the ping worked.
>
> But if some one has a script or C program that could do this I would
> appreciate the source, or if you could just tell me how to do it.
Here is a bash script that will do what you want. The syntax is:
ping_script [-t time] <host> <program> [arg] ...
It will execute <program> with all the arguments [arg] ... if ping
to the <host> is unsuccessful at the interval of "time" minutes. The
default "time" is 1 minute when you do not supply the -t option.
Hope this is useful.
Sanjay
--------------40DFC53C226FBCD85DDDF94E
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="tt"
#!/bin/bash
COM=${0##*/}
USAGE="$COM [-t time] <hostname> <prog> [arg] ..."
ERR="err: usage - $USAGE"
declare -i TIME=60
while getopts t: OPT > /dev/null 2>&1
do
case $OPT in
(t)
TIME=$OPTARG
TIME=$TIME*60
;;
(\?)
echo "$ERR"
exit 1
;;
esac
done
shift `expr $OPTIND - 1`
if [ $# -lt 2 ]
then
echo "$ERR"
exit 1
fi
HOST=$1
shift 1
PROG="$*"
while true
do
sleep $TIME
ping -c 1 $HOST > /dev/null 2>&1; RES=$?
if [ $RES -ne 0 ]
then
$PROG
fi
done
--------------40DFC53C226FBCD85DDDF94E--