#!/bin/bash
#
# Nagios Plugin for checking states of BlackBerry Enterprise Server 
#
# Date: 09.05.2008
# License: GNU Public License v2
# Version: 0.2 stable
# Written by: Philipp Deneu
# Framework by: Christian Mies
# 
# Contact 
# E-Mail: pdeneu@gne.de
# Skype: derdeneu
#
# www.gne.de 
#

pluginpath=`dirname $0`
pluginname=`basename $0`

echo "`date`: $*" >> /tmp/$pluginname.log

while getopts "H:C:Q:w:c:" options; do
  case $options in
        H)hostname=$OPTARG;;
        C)community=$OPTARG;;
        Q)query=$OPTARG;;
    w)warn=${OPTARG:-5};;
    c)crit=${OPTARG:-10};;
        *)
          echo "$pluginname Help:"
          echo "-----------------"
          echo "-H <Hostname> : Hostname/IP of BES "
          echo "-C <communty> : SNMP Community. Default: public"
          echo "-Q query : the part to query:"
          echo "                 srpconnect= SRP connection status "
          echo "                 bes-version= BlackBerry Enterprise Server Version "
          echo "                 pending= Number of messages pending "
          echo "                 licenses= Number of used Licenses "
          echo "-w <warn> : Warning Threshold "
          echo "-c <crit> : Critical Threshold "
          echo "-----------------"
          echo "Usage: $pluginname -H <HOSTADDRESS> -C <community> -Q  -w <warn> -c <crit>"
          exit 3
        ;;
  esac
done

if [ -z $community ]; then
        community=public;
fi;

if [ -z $warn ]; then
	warn=5
fi;

if [ -z $crit ]; then
	crit=10
fi;

SNMPWALK_BIN='/usr/bin/snmpwalk'
SRPCON='1.3.6.1.4.1.3530.5.25.1.10.1' # Connection Status to SRP Router 
SRPLASTCON='1.3.6.1.4.1.3530.5.25.1.11.1' # Last SRP Connect
BESVERS='1.3.6.1.4.1.3530.5.20.1.10.1' # Version of BES
PENDINGMSG='1.3.6.1.4.1.3530.5.25.1.301.1' # Number of messages pending
USEDLICENSES='1.3.6.1.4.1.3530.5.20.1.21.1' # Number of used Licenses

case $query in
        srpconnect)
                SRPOID=`$SNMPWALK_BIN -v 1 -c $community -On $hostname $SRPCON | awk '{print $4}' | tr -d '\n'`;
		SRPLASTOID=`$SNMPWALK_BIN -v 1 -c $community -On $hostname $SRPLASTCON | awk '{print $4" "$5}' | tr -d '\n"'`;
                if [ ${SRPOID:--1} -le 0 ]; then
                        echo "CRITICAL: Connection to SRP-Router failed"
                        exit 2
                fi;
                echo "OK: Successful connected to SRP-Router. Last Connection: $SRPLASTOID"
                exit 0
        ;;

	bes-version)
                BESVOID=`$SNMPWALK_BIN -v 1 -c $community -On $hostname $BESVERS | awk '{print $10}' | tr -d '\n"'`;
		if [ -z $BESVOID ]; then
			echo "CRITICAL: Error receiving data from host"
			exit 2
		fi;
 
			echo "BlackBerry Enterprise Server Version: $BESVOID"
                exit 0
        ;;

	pending)
                PENDINGMSGOID=`$SNMPWALK_BIN -v 1 -c $community -On $hostname $PENDINGMSG | awk '{print $4}' | tr -d '\n'`;
		if [ -z $PENDINGMSGOID ]; then
			echo "CRITICAL: Error receiving data from host"
			exit 2
		fi;
                if [ "$PENDINGMSGOID" -ge "$crit" ]; then
                        echo "CRITICAL: Pending Mails: $PENDINGMSGOID|Pending=$PENDINGMSGOID;$warn;$crit;;"
                        exit 2
                fi;
                if [ "$PENDINGMSGOID" -ge "$warn" ] && [ $PENDINGMSGOID -lt $crit ]; then
                                echo "WARNING: Pending Mails: $PENDINGMSGOID|Pending=$PENDINGMSGOID;$warn;$crit;;"
                                exit 1
                fi;
                echo "OK: Pending Mails: $PENDINGMSGOID|Pending=$PENDINGMSGOID;$warn;$crit;;"
                exit 0
        ;;

        licenses)
                LICENSESOID=`$SNMPWALK_BIN -v 1 -c $community -On $hostname $USEDLICENSES | awk '{print $4}' | tr -d '\n'`;
		if [ -z $LICENSESOID ]; then
			echo "CRITICAL: Error receiving data from host"
			exit 2
		fi;
                if [ "$LICENSESOID" -ge $crit ]; then
                        echo "CRITICAL: Licenses used: $LICENSESOID|Licenses=$LICENSESOID;$warn;$crit;;"
                        exit 2
                fi;
                if [ "$LICENSESOID" -ge $warn ] && [ $LICENSESOID -lt $crit ]; then
                        echo "WARNING: Licenses used: $LICENSESOID|Licenses=$LICENSESOID;$warn;$crit;;"
			exit 1
                fi;
                echo "OK: Licenses used: $LICENSESOID|Licenses=$LICENSESOID;$warn;$crit;;"
		exit 0
        ;;

        *)
                echo "UNKNOWN: not implemented. Use $pluginname -h"
                exit 3
        ;;


esac
