Wednesday, January 28, 2009

Update 0.4

I've updated the script. This time I changed the SNMP version from 1 to 2c. It appears some printer still want to use the first version

http://www.nagiosexchange.org/cgi-bin/page.cgi?g=Detailed%2F2926.html;d=1

Monday, January 26, 2009

Update 0.3

An update to the check_toner script:
nagiosexchange.org.



#!/bin/bash
#
#check_toner version 0.3
#
#01-26-2009, Henry Franco
#
# This plugin will check the black toner level on a printer via SNMP.
# The plugin returns warning and critical status when the toner
# drops below $CRIT AND $WARN.


if [ $# -lt 1 ]; then
echo "Usage: ./check_toner PRINTER_NAME"
exit 127
fi

HOST=$1
INK="Black ink available:"
CRIT=5
WARN=10
STATUS=0

# GET THE MAXIMUN CAPACITY VALUE FROM SNMP
max_level=`snmpwalk -O qv -v 2c -c public $HOST mib-2.43.11.1.1.8.1.1`
RES=$?

# GET CURRENT SUPPLY LEVEL FROM SNMP
current_level=`snmpwalk -O qv -v 2c -c public $HOST mib-2.43.11.1.1.9.1.1`
RES=$?

#BAIL OUT IF ANYTHING WENT WRONG
if [ $RES != 0 ]; then
INK="Toner Unknown - SNMP problem. No data received from host.";
echo $INK;
STATUS=3;
exit $STATUS;
fi

#CALCULATE TONER LEVEL
result=$(echo "scale=2; $current_level / $max_level;" | bc)

#ACTUAL VALUE OF TONER SUPPLY
percent=`echo "$result"*"100"/"1"|bc`

#CHECK WARNING AND CRITICAL LEVELS
if [ $percent -le $CRIT ]; then
echo "Toner Critical - "$INK $percent"%";
STATUS=2
elif [ $percent -le $WARN ]; then
echo "Toner Warning - "$INK $percent"%";
STATUS=1
else
echo "Toner OK - "$INK $percent"%";
fi

exit $STATUS

Checking Toner with Nagios

I wrote a very simple script for Nagios that will check the black toner level for any laser printer configured with SNMP nagiosexchange.org.



#!/bin/bash
#
#01-26-2009, Henry Franco
#
# This plugin will check the black toner level on a printer via SNMP.
# The plugin returns warning and critical status when the toner
# drops below $CRIT AND $WARN.


if [ $# -lt 1 ]; then
echo "Usage: ./check_toner PRINTER_NAME"
exit 127
fi

HOST=$1
INK="Black ink available:"
NAGIOSPLUGSDIR=/usr/lib/nagios/plugins
CRIT=5
WARN=10
STATUS=0

# GET THE MAXIMUN CAPACITY VALUE FROM SNMP
# YOU WILL GET THE SAME VALUE RUNNING snmpwalk -O n -v 2c -c public $HOST mib-2.43.11.1.1.8.1.1
max_level=`$NAGIOSPLUGSDIR/check_snmp -H $HOST -C public -o mib-2.43.11.1.1.8.1.1`
RES=$?

# GET CURRENT SUPPLY LEVEL FROM SNMP
# YOU WILL GET THE SAME VALUE RUNNING snmpwalk -O n -v 2c -c public $HOST mib-2.43.11.1.1.9.1.1
current_level=`$NAGIOSPLUGSDIR/check_snmp -H $HOST -C public -o mib-2.43.11.1.1.9.1.1`
RES=$?

#BAIL OUT IF ANYTHING WENT WRONG
if [ $RES != 0 ]; then
INK="Toner Unknown - SNMP problem. No data received from host.";
echo $INK;
STATUS=3;
exit $STATUS;
fi

#EXTRACT VALUES FROM CHECK_SNMP COMMANDS
new_max_level=`echo $max_level|cut -d ' ' -f4`
new_current_level=`echo $current_level|cut -d ' ' -f4`
result=$(echo "scale=2; $new_current_level / $new_max_level;" | bc)

#ACTUAL VALUE OF TONER SUPPLY
percent=`echo "$result"*"100"/"1"|bc`


#CHECK WARNING AND CRITICAL LEVELS
if [ $percent -le $CRIT ]; then
echo "Toner Critical - "$INK $percent"%";
STATUS=2
elif [ $percent -le $WARN ]; then
echo "Toner Warning - "$INK $percent"%";
STATUS=1
else
echo "Toner OK - "$INK $percent"%";
fi


exit $STATUS