#!/bin/bash
# TINA  plugin for Nagios
# Written by M.Koettenstorfer (mko@lihas.de)
# Last Modified: 03-11-2008
#
# Description:
#
# This plugin will check the status of a local
# TINA libary. It will provide how many Tapes Full
#
# get tina enviroment
RUNTINA="/usr/Atempo/tina/Bin/runtina"
TINALISTTAPES="$RUNTINA  tina_library_control -list -library "


# Nagios return codes
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4

if [ ! -x "$RUNTINA" ]
then
	echo "UNKNOWN: $TINALISTTAPES not found or is not executable by the nagios user"
	exitstatus=$STATE_UNKNOWN
	exit $exitstatus
fi

PROGNAME=`basename $0`

print_usage() {
	echo "Usage: $PROGNAME -w <full warning level> -c <full critical level> -l <library to observe>"
	echo ""
	echo "Notes:"
	echo "-w: WARNING level for full tapes"
	echo "-c: CRITICAL level for full tapes"
	echo "-l: Name of the Library you want to observ"
	echo ""
}

print_help() {
	print_usage
	echo ""
	echo "This plugin will check the howmany tapes are full on an tina server."
	echo ""
	exit 0
}

check_full_tapes()
{
                        if [ "$critlevel" -ge "$TAPECOUNT" ]
                        then
                                MESSAGE="TINA CRITICAL only $TAPECOUNT Tape Empty - $FULLSTRING"
                                exitstatus=$STATE_CRITICAL
                        elif [ "$warnlevel" -ge "$TAPECOUNT" ]
                        then
                                MESSAGE="TINA WARNING only $TAPECOUNT Tapes Empty - $FULLSTRING"
                                exitstatus=$STATE_WARNING
                        else
                                MESSAGE="TINA OK $TAPECOUNT Tapes Empty - $FULLSTRING"
                                exitstatus=$STATE_OK
                        fi 
}

if [ $# -lt 4 ]; then
	print_usage
	exit $STATE_UNKNOWN
fi

exitstatus=$STATE_UNKNOWN #default

while test -n "$1"; do
	case "$1" in
		--help)
			print_help
			exit $STATE_OK
			;;
		-h)
			print_help
			exit $STATE_OK
			;;
		-w)
			warnlevel=$2
			shift
			;;
		-c)	
			critlevel=$2
			shift
			;;
		-l)	
			library=$2
			shift
			;;
	esac
	shift
done

# Check arguments for validity
if [ $warnlevel -lt $critlevel ] # Do the warn/crit values make sense?
then	
	echo "CRITICAL value of $warnlevel less than WARNING level of $critlevel"
	print_usage
	exitstatus=$STATE_UNKNOWN
	exit $exitstatus
elif [ -n $library ]
then
	JOBTMP=`mktemp -t tinatapes.XXXXXX` # Create a tmpfile to store the test results
	TMP=`mktemp -t tina.XXXXXX` # Create a tmpfile to store the test results
	$TINALISTTAPES $library | grep -v Barcode | sed s/-/\ /g > $TMP 
	FULLSTRING=`< $TMP` # populate whole
	$TINALISTTAPES $library  | grep Full | wc -l   > $JOBTMP 
	FULLTAPES=`< $JOBTMP` # populate how many tape are Full
	TAPECOUNT=`echo "(10 - $FULLTAPES)" | bc`
				check_full_tapes
	rm -rf $JOBTMP
	rm -rf $TMP
fi

echo $MESSAGE
exit $exitstatus

