#!/bin/bash
# Sat Apr 16 09:39:35 EDT 2016
# Description : Check the uptime of the cable modem
# Version : 1.0
# Author : Vince Herried
# License : GPLv3
# Commands
CMD_GREP="/bin/grep"
CMD_AWK="/usr/bin/awk"
CMD_EXPR="/usr/bin/expr"
CMD_WGET="/usr/bin/wget"
SCRIPTNAME=$(basename $0)
# Version
VERSION="1.0"
# Plugin return codes
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
# Default options
HOSTNAME="192.168.100.1"
WARNING=0
CRITICAL=0
STATUS="Cable Modem Status"
OPERATIONAL="Operational"
print_version() {
echo $SCRIPTNAME version $VERSION
echo ""
echo "The nagios plugins come with ABSOLUTELY NO WARRANTY."
echo "You may redistribute copies of the plugins under the terms of the GNU General Public License v3."
}
# Option processing
print_usage() {
echo "Usage: ./check_cableModem -H 192.168.100.1 -w 4 -c 1"
echo " $SCRIPTNAME -H ADDRESS"
echo " $SCRIPTNAME -w INTEGER"
echo " $SCRIPTNAME -c INTEGER"
echo " $SCRIPTNAME -h"
echo " $SCRIPTNAME -V"
}
print_help() {
print_version
echo ""
print_usage
echo ""
echo "Check the days of uptime on a Surfboard cable modem"
echo ""
echo "-H ADDRESS"
echo " Name or IP address of cable modem (default: 192.168.100.1)"
echo "-w INTEGER"
echo " Warning level for number of days up (default: 0)"
echo "-c INTEGER"
echo " Critical level for number of days up (default: 0)"
echo "-h"
echo " Print this help screen"
echo "-V"
echo " Print version and license information"
echo ""
echo ""
}
while getopts H:w:c:hV OPT
do
case $OPT in
H) HOSTNAME="$OPTARG" ;;
w) WARNING=$OPTARG ;;
c) CRITICAL=$OPTARG ;;
h)
print_help
exit $STATE_UNKNOWN
;;
V)
print_version
exit $STATE_UNKNOWN
;;
esac
done
# Plugin processing
# does this look like the modem?
$CMD_WGET --output-document=- http://$HOSTNAME/indexData.htm 2>/dev/null | $CMD_GREP "$STATUS" >/dev/null
RC=$?
if [ $RC -ne 0 ] ; then
echo "This doesn't appear to be a valid cable modem page"
echo "The first page of the web interface does not include the character string $STATUS"
print_help
exit $STATE_UNKNOWN
fi
# is the modem operational ?
$CMD_WGET --output-document=- http://$HOSTNAME/indexData.htm 2>/dev/null | $CMD_GREP "$OPERATIONAL" >/dev/null
RC=$?
if [ $RC -ne 0 ] ; then
echo "The cable modem is not operational"
exit $STATE_CRITICAL
fi
#get number of days uptime
DAYS=`$CMD_WGET --output-document=- http://$HOSTNAME/indexData.htm 2>/dev/null | $CMD_GREP days | $CMD_AWK '{ print $1 }' | $CMD_AWK -F ">" '{print $NF}'`
if [ $WARNING != 0 ] || [ $CRITICAL != 0 ]; then
if [ $DAYS -lt $CRITICAL ] && [ $CRITICAL != 0 ]; then
STATE=$STATE_CRITICAL
elif [ $DAYS -lt $WARNING ] && [ $WARNING != 0 ]; then
STATE=$STATE_WARNING
else
STATE=$STATE_OK
fi
else
STATE=$STATE_OK
fi
DESCRIPTION="Cable modem uptime is $DAYS days"
echo $DESCRIPTION
exit $STATE