[SATLUG] program or cron job to ping internal devices & email
Tom Weeks
tweeksjunk2 at theweeks.org
Wed Jan 16 11:52:04 CST 2008
On Wednesday 16 January 2008 11:07:48 Bruce Dubbs wrote:
> twistedpickles wrote:
> > Does know or have a program or cron job that can ping network devices and
> > if down send out an email?
>
> You can try some variation of:
>
> #!/bin/bash
>
> function pingit
> {
> echo -n "Pinging $1 "
> s=`ping -w$2 -q $1`
> field=-f18
> echo $s | grep duplicate > /dev/null && field=-f20
> loss=`echo $s|cut -d" " $field`
> echo "-- $loss packet loss ($3)"
> }
>
> if [ $# -eq 0 ]; then timeout=10; else timeout=$1; fi
>
>
> pingit 172.24.0.3 $timeout phobos0
> pingit 172.24.0.5 $timeout venus0
> pingit 172.21.0.3 $timeout deimos0
>
> ---------
>
> Note that there are a couple variations of the ping program. You want
> the one from iputils: http://www.linux-foundation.org/en/Net:Iputils
I wrote something similar to this back in the day when I was graphing my ISPs
uptime (provided network availability).
Matt.. one way of easily doing this yourself too is to rely on ping's exit
status in bash of $?. After doing a couple of "ping -c 1 $target", and echo
(or save) $?, it will=0 if the ping was successful, or >=1 if it did not
reach the destination.
Like this if successful:
STATUS=$(ping -c 1 xcssa.org >/dev/null 2>&1;echo $? )
echo $STATUS
0
or this if unsuccessful:
STATUS=$(ping -c 1 xxx >/dev/null 2>&1;echo $? )
echo $STATUS
2
Based on this, and a little more scripting and time delays (sleep 30s) and
fileredirection (like "echo $STATUS >> ping-status_$(date +%Y-%m-%d)" ) you
can easily come up with a system to monitor systems.
However... if you're really not wanting to write something like this.. then
what they others were suggestions about both clientless (and client based)
monitoring systems like bbrother, nagios, etc are also good, ready to go
systems.
Tweeks
More information about the SATLUG
mailing list