#!/bin/bash

# check_netscreen_policy_vsys
# 
#
# Created by David Hanisch on 09.06.09.
# Copyright 2009 noris network AG. All rights reserved.

OID=".1.3.6.1.4.1.3224.10.1.1.23"
VSYSOID=".1.3.6.1.4.1.3224.15.1.1.1.2"
VSYSOIDNUM=".1.3.6.1.4.1.3224.15.1.1.1.1"
HOSTNAME="$1"
COMMUNITY="$2"
POLICY="$3"
VSYS="$4"
OK="0"
CRIT="2"
UNKNOWN="3"


function usage {
cat <<_
Usage: $0 HOST COMMUNITY POLICYID VSYS STATUS 

Beschreibung:
     Dieses Nagios-Plugin testet ob innerhalb eines VSYS's eine Netscreen Policy-ID aktiv ist oder deaktiviert ist.
     Mit STATUS kann man bestimmen ob eine Policy in einem bestimmten Zustand ein "OK" oder "CRITICAL"
     ausliefern soll.
     
STATUS:
      -d      disabled
      -e      enabled
      
_

exit $CRIT   
}	

if [ $# -lt 5 ]; then
	usage
fi

VSYSID="`snmpwalk -Os -c $COMMUNITY -v 2c $HOSTNAME $VSYSOID | grep "$VSYS" | awk -F. '{print $NF}' | awk '{print $1}'`"
VSYSNUM="`snmpwalk -Os -c $COMMUNITY -v 2c $HOSTNAME $VSYSOIDNUM.$VSYSID | awk '{print $NF}'`"
function enabled {
if [ `snmpget -Os -c $COMMUNITY -v 2c $HOSTNAME $OID.$POLICY.$VSYSNUM | awk '{print $NF}'` -eq 1 > /dev/null 2>&1 ]; then
	echo "OK: Policy $POLICY enabled!"
	exit $OK
elif [ `snmpget -Os -c $COMMUNITY -v 2c $HOSTNAME $OID.$POLICY.$VSYSNUM | awk '{print $NF}'` -eq 0 > /dev/null 2>&1 ]; then
	echo "CRITICAL: Policy $POLICY disabled!"
	exit $CRIT
else
	exit $UNKNOWN
fi
}

function disabled {
if [ `snmpget -Os -c $COMMUNITY -v 2c $HOSTNAME $OID.$POLICY.$VSYSNUM | awk '{print $NF}'` -eq 0 > /dev/null 2>&1 ]; then
        echo "OK: Policy $POLICY disabled!"
        exit $OK
elif [ `snmpget -Os -c $COMMUNITY -v 2c $HOSTNAME $OID.$POLICY.$VSYSNUM | awk '{print $NF}'` -eq 1 > /dev/null 2>&1 ]; then
	echo "CRITICAL: Policy $POLICY enabled!"
	exit $CRIT
else
	exit $UNKNOWN
fi
}

case "$5" in
	-e)
		enabled
                ;;
        -d)
                disabled
                ;;
         *)
                usage
                ;;
	esac
done
