#!/bin/bash

# check_netscreen_vpn_vsys
# 
#
# Created by David Hanisch on 19.04.10.
# Copyright 2010 noris network AG. All rights reserved.

VPNID=".1.3.6.1.4.1.3224.4.1.1.1.5"
VPNNAME=".1.3.6.1.4.1.3224.4.1.1.1.4"
P1STAT=".1.3.6.1.4.1.3224.4.1.1.1.21"
P2STAT=".1.3.6.1.4.1.3224.4.1.1.1.23"
MONSTATUS=".1.3.6.1.4.1.3224.4.1.1.1.19"
TUNNELSTATE=".1.3.6.1.4.1.3224.4.1.1.1.20"

HOSTNAME="$1"
COMMUNITY="$2"
VPN="$3"
VSYS="$4"
OK="0"
CRIT="2"
UNKNOWN="3"


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

Beschreibung:
     Dieses Nagios-Plugin testet ob innerhalb eines VSYS's ein VPN-Tunnel aktiv ist oder nicht.
     VPN ist der jeweilige Name der Phase 2.

     Es wird geprueft ob Phase 1 und Phase 2 stehen. Sobald dies nicht der Fall ist, wird ein CRITIAL
     ausgeliefert.
_

exit $CRIT   
}	


function check_vpn {

if [ "`snmpwalk -Os -c $COMMUNITY -v 2c $HOSTNAME $MONSTATUS.$i | awk '{print $NF}'`" -eq 0 ]; then
	if [ "`snmpwalk -Os -c $COMMUNITY -v 2c $HOSTNAME $P2STAT.$i | awk '{print $NF}'`" -eq 1 ]; then
		echo "Ok: P1 OK, P2 OK"
		exit $OK
	elif [ "`snmpwalk -Os -c $COMMUNITY -v 2c $HOSTNAME $P2STAT.$i | awk '{print $NF}'`" -eq 0 ]; then
		echo "CRITICAL: P1 CRITICAL, P2 CRITICAL!"
		exit $CRIT
	fi
elif [ "`snmpwalk -Os -c $COMMUNITY -v 2c $HOSTNAME $MONSTATUS.$i | awk '{print $NF}'`" -eq 1 ]; then
	if [ "`snmpwalk -Os -c $COMMUNITY -v 2c $HOSTNAME $TUNNELSTATE.$i | awk '{print $NF}'`" -eq 1 ]; then
		echo "OK: Tunnel UP!"
		exit $OK
	else
		echo "CRITICAL: Tunnel DOWN!"
		exit $CRIT
	fi
fi

}

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

for i in `snmpwalk -Os -c $COMMUNITY -v 2c $HOSTNAME $VPNID | grep "$VSYS" | awk -F. '{print $NF}' | awk '{print $1}'`
do
	if [ `snmpwalk -Os -c $COMMUNITY -v 2c $HOSTNAME $VPNNAME.$i | awk '{print $NF}' | tr -d  \"` == "$VPN" ]; then
		check_vpn
	fi
done
echo "WARNING: VPN $VPN nicht gefunden!"
exit $WARN
