Nagios plugin for checking ping in bash
Everyone that uses Nagios knows about the basic check_ping plugin. However, today I needed a light version in bash with the same functionality that its easy to modify…
The result is seen below. My Nagios ping-plugin checks the rtt avg time against the treshold values for critical and warning. I never bothered to check for packet losses because that wasn’t the purpose for this script. It only checks ping avg time but could easily be customized to check other things as well.
nagios-check-ping.sh
#!/bin/bash
# This script pings a host and compares critical and warning tresholds against avg rtt (ms)
# Syntax: nagios-check-ping.sh HOST CRITICAL WARNING
# Example: nagios-check-ping.sh www.sunet.se 10 20
if [ ! -n "$1" ]
then
echo "UNKNOWN: Missing argument HOSTNAME..."
exit 3
fi
if [ ! -n "$2" ]
then
echo "UNKNOWN: Missing argument WARNING..."
exit 3
fi
if [ ! -n "$3" ]
then
echo "UNKNOWN: Missing argument CRITICAL..."
exit 3
fi
AVG=`ping -n -c 5 $1 | awk -F/ '/^rtt/ { print $5 }' | awk -F '.' '{ print $1; }'`
if [ ! -n "$AVG" ]
then
echo "CRITICAL: Error pinging"
exit 2
elif [ $AVG -le "$2" ]
then
SC="OK"
EX=0
elif [ $AVG -le "$3" ]
then
SC="WARNING"
EX=1
else
SC="CRITICAL"
EX=2
fi
echo "$SC: Average response time is $AVG ms"
exit $EX
Run it like this:
> nagios-check-ping.sh www.sunet.se 10 20
Example output:
WARNING Average response time is 20 ms
