#!/bin/bash

# check_ethernetprobe2
# Description : Check the status of printers
# Version : 1.0
# Author : Jochem van den Anker @ Lorentz Casimir Lyceum 
#	   with thanks to Yoann LAMY
# Licence : GPLv2

# Commands
CMD_BASENAME="/usr/bin/basename"
CMD_SNMPGET="/usr/bin/snmpget"
CMD_SNMPWALK="/usr/bin/snmpwalk"
CMD_AWK="/usr/bin/awk"
CMD_GREP="/bin/grep"
CMD_EXPR="/usr/bin/expr"

# Script name
SCRIPTNAME=`$CMD_BASENAME $0`

# Version
VERSION="1.0"

# Plugin return codes
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3

# Cartridges
OID_CURRENT_TEMP="1.3.6.1.4.1.3854.1.2.2.1.16.1.3.0"
OID_CURRENT_TEMP_FULL="1.3.6.1.4.1.3854.1.2.2.1.16.1.14.0"

DESCRIPTION="Unknown"
STATE=$STATE_UNKNOWN

# Default options
COMMUNITY="public"
HOSTNAME="127.0.0.1"
TYPE="temp"
WARNING=30
CRITICAL=35

# Option processing
print_usage() {
  echo "Usage: ./check_etherprobe2 -H 127.0.0.1 -C public -t temp -w 30 -c 35"
  echo "  $SCRIPTNAME -H ADDRESS"
  echo "  $SCRIPTNAME -C STRING"
  echo "  $SCRIPTNAME -t STRING"
  echo "  $SCRIPTNAME -w INTEGER"
  echo "  $SCRIPTNAME -c INTEGER"
  echo "  $SCRIPTNAME -h"
  echo "  $SCRIPTNAME -V"
}

print_version() {
  echo $SCRIPTNAME version $VERSION
  echo ""
  echo "This nagios plugin comes with ABSOLUTELY NO WARRANTY."
  echo "You may redistribute copies of this plugin under the terms of the GNU General Public License v2."
}

print_help() {
  print_version
  echo ""
  print_usage
  echo ""
  echo "Check the status of a ATAL Ethernetprobe2 temperature"
  echo ""
  echo "-H ADDRESS"
  echo "   Name or IP address of host (default: 127.0.0.1)"
  echo "-C STRING"
  echo "   Community name for the host's SNMP agent (default: public)"
  echo "-t STRING"
  echo "   Different status (temp, tempfull)"
  echo "-w INTEGER"
  echo "   Warning level for temperature in degrees (default: 30)"
  echo "-c INTEGER"
  echo "   Critical level for temperature in degrees (default: 35)"
  echo "-h"
  echo "   Print this help screen"
  echo "-V"
  echo "   Print version and license information"
  echo ""
  echo ""
  echo "This plugin uses the 'snmpget' command and the 'snmpwalk' command included with the NET-SNMP package."
  echo "This plugin support performance data output."
  echo "If the percentage of the warning level and the critical level are set to 0, then the script returns an OK state."
}

while getopts H:C:t:w:c:hV OPT
do
  case $OPT in
    H) HOSTNAME="$OPTARG" ;;
    C) COMMUNITY="$OPTARG" ;;
    t) TYPE="$OPTARG" ;;
    w) WARNING="$OPTARG" ;;
    c) CRITICAL="$OPTARG" ;;
    h)
      print_help
      exit $STATE_UNKNOWN
      ;;
    V)
      print_version
      exit $STATE_UNKNOWN
      ;;
   esac
done

# Plugin processing
if [ $TYPE = "temp" ]; then
  CURRENT_TEMP=`$CMD_SNMPGET -t 2 -r 2 -v 1 -c $COMMUNITY -Ovq $HOSTNAME "${OID_CURRENT_TEMP}"`;

  if [ "$CURRENT_TEMP" -ge "$CRITICAL" ] ; then
	STATE=$STATE_CRITICAL;
  elif [ "$CURRENT_TEMP" -ge "$WARNING" ] ; then
	STATE=$STATE_WARNING;
  else
	STATE=$STATE_OK;
  fi
  DESCRIPTION="Temperature: $CURRENT_TEMP"

elif [ $TYPE = "tempfull" ]; then

  CURRENT_TEMP_FULL=`$CMD_SNMPGET -t 2 -r 2 -v 1 -c $COMMUNITY -Ovq $HOSTNAME "${OID_CURRENT_TEMP_FULL}"`;

  if [ "$CURRENT_TEMP_FULL" -ge "$CRITICAL" ] ; then
	STATE=$STATE_CRITICAL;
  elif [ "$CURRENT_TEMP_FULL" -ge "$WARNING" ] ; then
	STATE=$STATE_WARNING;
  else
	STATE=$STATE_OK;
  fi
  DESCRIPTION="Temperature: $CURRENT_TEMP_FULL"

fi
echo $DESCRIPTION
exit $STATE
