#!/bin/bash
# See Help below
# See Version History below

VERB=0
VERSION=2.1.1
PROGPATH=/usr/local/nagios/libexec
. $PROGPATH/utils.sh
. /etc/nagios/password

while getopts ":t:u:p:i:w:c:v:r:s:l:a:f:o:b:n:hz" opt; do
	case $opt in
		t)		TYPE=$OPTARG >&2 ;;
		u)		USER=$OPTARG >&2 ;;
		p)		PASS=$OPTARG >&2 ;;
		i)		INSTANCE=$OPTARG >&2 ;;
		w)		WARN=$OPTARG >&2 ;;
		c)		CRIT=$OPTARG >&2 ;;
		v)		VERS=$OPTARG >&2 ;;
		l)		LEVL=$OPTARG >&2 ;;
		r)		RECL=$OPTARG >&2 ;;
		s)		STGP=$OPTARG >&2 ;;
		a)		ACTIVITY=$OPTARG >&2 ;;
		f)		TIME=$OPTARG >&2 ;;
		b)		LIBR=$OPTARG >&2 ;;
		n)		NODE=$OPTARG >&2 ;;
		h)		HELP=1 >&2 ;;
		o)		OPT=$OPTARG >&2 ;;
		\?)	echo "Invalid option: -$OPTARG" >&2
				exit $STATE_UNKNOWN
		;;
		:)		echo "Option -$OPTARG requires an argument." >&2
				exit $STATE_UNKNOWN
		;;
	esac
done

DSMADMC="`which dsmadmc` -se=$INSTANCE -id=$USER -pa=$PASS -dataonly=yes -errorlogname=/home/nagios/dsmerror.log"
# major release.feature add.bug fix

if [ -z $TYPE ];then
	HELP=1
fi

if [ "$TYPE" = "version" ]; then
	echo $VERSION
fi

if [ "$TYPE" = "scratch" ]; then

	if [ "$WARN" -le $CRIT ]; then
		echo "attention: warning has to be more than critical"
		exit $STATE_UNKNOWN
	fi

	RESULT=$(($DSMADMC "select count (*) from libvolumes where status='Scratch' and LIBRARY_NAME='$LIBR'")|sed "s/ //g")
	echo "$LIBR Scratch Tapes av: $RESULT|'Scratch Tapes available in $LIBR'=$RESULT;$WARN;$CRIT;0;$RESULT"

	if [[ $RESULT =~ .*"Unable to read output".* ]]; then
		exit $STATE_UNKNOWN
	fi

	if [ $RESULT -le $CRIT ]; then
		exit $STATE_CRITICAL

	elif [ $RESULT -le $WARN ]; then
		exit $STATE_WARNING

	elif [ $RESULT -ge $WARN ]; then
		exit $STATE_OK

	else
		exit $STATE_UNKNOWN
	fi
fi	

if [ "$TYPE" = "db_used_pages" ]; then
	if [[ $WARN > $CRIT ]]; then
		echo "attention: warning has to be less than critical"
		exit $STATE_UNKNOWN
	fi

	RESULT=$(($DSMADMC "SELECT USED_PAGES FROM db")|sed "s/ //g")
	echo "DB pages used: $RESULT|'DB pages used'=$RESULT"

	if [[ $RESULT =~ .*"Unable to read output".* ]]; then
		exit $STATE_UNKNOWN
	else
		exit $STATE_OK
	fi

fi	

#--------------------------------

if [ "$TYPE" = "arclog" ]; then
	RESULT=$(($DSMADMC "SELECT ARCHLOG_FREE_FS_MB FROM log")|sed "s/ //g")
	RESULT=$(echo $RESULT|awk -F"." '{print $1}')
	echo "Archive Log Free MB: $RESULT|'archlog mb free'=${RESULT}MB;$WARN;$CRIT"

	if [[ $RESULT =~ .*"Unable to read output".* ]]; then
		exit $STATE_UNKNOWN
	fi

	if [[ $RESULT -gt $WARN ]]; then
		exit $STATE_OK
	elif [[ $RESULT -lt $CRIT ]]; then
		exit $STATE_CRITICAL
	elif [[ $RESULT -lt $WARN ]]; then
		exit $STATE_WARNING
	else
		exit $STATE_UNKNOWN
	fi
fi

#--------------------------------

if [ "$TYPE" = "actlog" ]; then
	RESULT=$(($DSMADMC "SELECT FREE_SPACE_MB FROM log")|sed "s/ //g")
	RESULT=$(echo $RESULT|awk -F"." '{print $1}')
	echo "Active Log Free MB: $RESULT|'actlog mb free'=${RESULT}MB;$WARN;$CRIT"

	if [[ $RESULT =~ .*"Unable to read output".* ]]; then
		exit $STATE_UNKNOWN
	fi

	if [[ $RESULT -gt $WARN ]]; then
		exit $STATE_OK
	elif [[ $RESULT -lt $CRIT ]]; then
		exit $STATE_CRITICAL
	elif [[ $RESULT -lt $WARN ]]; then
		exit $STATE_WARNING
	else
		exit $STATE_UNKNOWN
	fi
fi	

if [ "$TYPE" = "drives_online" ]; then

	RESULT=$(($DSMADMC "select count (*) from drives where online='YES' and library_name='$LIBR'")|sed "s/ //g")
	echo "Drives online: $RESULT|'Drives online'=$RESULT;$WARN;$CRIT"

	if [[ $RESULT =~ *"Unable to read output"* ]]; then
		exit $STATE_UNKNOWN
	fi

	if [[ $RESULT -le $CRIT ]]; then
		exit $STATE_CRITICAL

	elif [[ $RESULT -gt $WARN ]]; then
		exit $STATE_OK

	elif [[ $RESULT -le $WARN ]]; then
		exit $STATE_WARNING

	else
		exit $STATE_UNKNOWN
	fi
fi	

if [ "$TYPE" = "drive_util" ]; then

	RESULT=$(($DSMADMC "select count (*) from drives where drive_state='LOADED' and library_name='$LIBR'")|sed "s/ //g")
	echo "Drives loaded: $RESULT|'Drives loaded'=$RESULT;$WARN;$CRIT"

	if [[ $RESULT =~ *"Unable to read output"* ]]; then
		exit $STATE_UNKNOWN
	fi

	if [[ $RESULT -le $WARN ]]; then
		exit $STATE_OK

	elif [[ $RESULT -ge $CRIT ]]; then
		exit $STATE_CRITICAL

	elif [[ $RESULT -ge $WARN ]]; then
		exit $STATE_WARNING

	else
		exit $STATE_UNKNOWN
	fi
fi	

if [ "$TYPE" = "session" ]; then

	RESULT=$(($DSMADMC "select count (*) from sessions where SESSION_TYPE='Node'")|sed "s/ //g")
	echo "Sessions: $RESULT|Sessions=$RESULT;$WARN;$CRIT"

	if [[ $RESULT =~ .*"Unable to read output".* ]]; then
		exit $STATE_UNKNOWN
	fi

	if [[ $RESULT -le $WARN ]]; then
		exit $STATE_OK

	elif [[ $RESULT -ge $CRIT ]]; then
		exit $STATE_CRITICAL

	elif [[ $RESULT -ge $WARN ]]; then
		exit $STATE_WARNING

	else
		exit $STATE_UNKNOWN
	fi
fi	

if [ "$TYPE" = "reclaim" ]; then

	RECLAIM=$(($DSMADMC "select reclaim from stgpools where stgpool_name='$STGP'")|sed "s/ //g")
	RESULT=$(($DSMADMC "select count(*) from volumes where PCT_RECLAIM>$RECLAIM and stgpool_name='$STGP' and status='FULL'")|sed "s/ //g")
	echo "Tapes reclaimable > $RECLAIM%: $RESULT|'reclaimable Tapes'=$RESULT;$WARN;$CRIT"

	if [[ $RESULT =~ .*"Unable to read output".* ]]; then
		exit $STATE_UNKNOWN
	fi

	if [[ $RESULT -le $WARN ]]; then
		exit $STATE_OK

	elif [[ $RESULT -ge $CRIT ]]; then
		exit $STATE_CRITICAL

	elif [[ $RESULT -ge $WARN ]]; then
		exit $STATE_WARNING

	else
		exit $STATE_UNKNOWN
	fi
fi	

if [ "$TYPE" = "waiting" ]; then

	RESULT=$(($DSMADMC "select count(*) from processes where status like'%Waiting for%'")|sed "s/ //g")
	echo "Processes waiting for mount point: $RESULT|'Waiting Processes'=${RESULT}c;$WARN;$CRIT"

	if [ $RESULT =~ *"Unable to read output"* ]; then
		exit $STATE_UNKNOWN
	fi

	if [[ $RESULT -le $WARN ]]; then
		exit $STATE_OK

	elif [[ $RESULT -ge $CRIT ]]; then
		exit $STATE_CRITICAL

	elif [[ $RESULT -ge $WARN ]]; then
		exit $STATE_WARNING

	else
		exit $STATE_UNKNOWN
	fi
fi	

if [ "$TYPE" = "paths" ]; then

	if [[ $WARN < $CRIT ]]; then
		echo "attention: warning has to be more than critical"
		exit $STATE_UNKNOWN
	fi

	RESULT=$(($DSMADMC "select count(*) from paths where online='YES'")|sed "s/ //g")
	echo "Paths online: $RESULT|'Paths online'=$RESULT;$WARN;$CRIT"

	if [ $RESULT =~ *"Unable to read output"* ]; then
		exit $STATE_UNKNOWN
	fi

	if [[ $RESULT -gt $WARN ]]; then
		exit $STATE_OK

	elif [[ $RESULT -le $CRIT ]]; then
		exit $STATE_CRITICAL

	elif [[ $RESULT -le $WARN ]]; then
		exit $STATE_WARNING

	else
		exit $STATE_UNKNOWN
	fi
fi

# --------------------------------------
if [ "$TYPE" = "stg" ]; then

	if [[ $WARN > $CRIT ]]; then
		echo "attention: warning has to be less than critical"
		exit $STATE_UNKNOWN
	fi

	RESULT=$(($DSMADMC "select cast(PCT_MIGR as dec(3)) from stgpools where stgpool_name='$STGP'")|sed "s/ //g")
	echo "$STGP migrateable: $RESULT%|DISKPOOL=$RESULT%;$WARN;$CRIT;0;$(echo $RESULT|awk -F"." '{print $1}')"

	if [[ $RESULT =~ .*"Unable to read output".* ]]; then
		exit $STATE_UNKNOWN
	fi

	if [[ $RESULT < $WARN ]]; then
		exit $STATE_OK

	elif [[ $RESULT > $CRIT ]]; then
		exit $STATE_CRITICAL

	elif [[ $RESULT > $WARN ]]; then
		exit $STATE_WARNING

	else
		exit $STATE_UNKNOWN
	fi
fi

# -------------------------------------------
if [ "$TYPE" = "dbb" ]; then

	RESULT=$(($DSMADMC "select count(*) from volhistory where type='BACKUPFULL' and date_time>=current_timestamp-36 hours")|sed "s/ //g")
	echo "DBB $INSTANCE last 36: $RESULT"

	if [[ $RESULT =~ .*"Unable to read output".* ]]; then
		exit $STATE_UNKNOWN
	fi

	if [[ $RESULT -ge "1" ]]; then
		exit $STATE_OK

	else
		exit $STATE_CRITICAL
	fi
fi

# --------------------------------------------
if [ "$TYPE" = "occu" ]; then

	RESULT=$(($DSMADMC "select (sum(LOGICAL_MB)/1024)/1024 from occupancy")|sed "s/ //g")

	if [[ $RESULT =~ .*"Unable to read output".* ]]; then
		exit $STATE_UNKNOWN
	elif
		[[ ! $RESULT ]]; then
		echo "There is no client data found|'Occupancy'=${RESULT}TB;$WARN;$CRIT"
	else
		echo "Occu (LOGICAL_MB) at all is: $RESULT TB|'Occupancy'=${RESULT}TB;$WARN;$CRIT"
	fi

	exit $STATE_OK
fi

if [[ "$TYPE" = "client_level" && $VERS && $LEVL ]]; then

	CLIENT_COUNT=$(($DSMADMC "select count(NODE_NAME) from nodes where (CLIENT_VERSION <= $VERS and CLIENT_RELEASE < $LEVL) or CLIENT_VERSION < $VERS")|sed "s/ //g")
	echo "Nodes below $VERS.$LEVL: $CLIENT_COUNT|'Nodes'=$CLIENT_COUNT;1;2"
#	NODES=$($DSMADMC "select NODE_NAME from nodes where (CLIENT_VERSION <= ${VERS} and CLIENT_RELEASE < ${LEVL}) or CLIENT_VERSION < ${VERS}")
#	echo $NODES

	if [[ $RESULT =~ .*"Unable to read output".* ]]; then
		exit $STATE_UNKNOWN
	fi

	exit $STATE_OK
fi

if [ "$TYPE" = "sessionwait" ]; then
	RESULT=$($DSMADMC "select session_id,wait_seconds,client_name from sessions")

	for WAIT in $(echo "$RESULT"|awk -F" " '{print $2}');do
		WAIT=$(echo "$WAIT/60"|bc)
		if [ $WAIT -ge $CRIT ];then
#			echo "Critical: Wait Time of $(echo "$RESULT"|awk -F" " '{print "SessionNr. " $1 " Client " $3}') is $WAIT Minutes"
			echo "Critical: We have a process with a Wait Time of $WAIT Minutes"
			exit $STATE_CRITICAL
#			break
		elif [ $WAIT -ge $WARN ]; then
			echo "Warning: We have a process with a Wait Time of $WAIT Minutes"
			exit $STATE_WARNING
		else
			echo "nobody's waiting more than $WARN Minutes"
			exit $STATE_OK
		fi
	done
fi

if [ "$TYPE" = "lastaccess" ]; then
	RESULT=$($DSMADMC "select NODE_NAME from nodes where (LASTACC_TIME<=current_timestamp-$CRIT days and repl_mode not like 'RECEIVE' and node_name not in (select distinct node_name from occupancy where type='Arch')) and node_name not like '%ARCHIVE' and (node_name like '%DECOM')")

	if [[ "$RESULT" =~ "ANR2034E" ]];then
		echo "No nodes with last access time greater than $CRIT days"
		exit $STATE_OK
	else
		echo "nodes with last access time greater than $CRIT days: "$RESULT" |'Zombie Hosts'=$(echo $RESULT|wc -w)"
		exit $STATE_WARNING
	fi
fi

if [ "$TYPE" = "alive" ]; then
	RESULT=$($DSMADMC "select server_name from status"|sed "s/ //g")
	INSTANCE=$(echo $INSTANCE | awk '{print toupper($0)}')

	if [ "$RESULT" = "$INSTANCE" ]; then
		echo "TSM server log in fine: $RESULT"
		exit $STATE_OK
	else
		echo "TSM server log failed: $RESULT"
		exit $STATE_CRITICAL
	fi
fi

if [ "$TYPE" = "maintenance" ]; then
	BASTG=$($DSMADMC "select count(*) from processes where process='Backup Storage Pool'"|sed "s/ //g")
	MIGR=$($DSMADMC "select count(*) from processes where process='Migration'"|sed "s/ //g")
	DBB=$($DSMADMC "select count(*) from processes where process='Backup Database'"|sed "s/ //g")
	RECL=$($DSMADMC "select count(*) from processes where process='Space Reclamation'"|sed "s/ //g")

	echo "Maintenance Processes - ba stg: $BASTG migr stg: $MIGR dbb: $DBB reclaim: $RECL|BaStg=$BASTG Migr=$MIGR DBB=$DBB Recl=$RECL"
	exit $STATE_OK
fi

if [ "$TYPE" = "nodecount" ]; then
	NODES=$($DSMADMC "select count(*) from nodes"|sed "s/ //g")

	echo "Node Count: $NODES|Nodes=$NODES"
	exit $STATE_OK
fi

if [ "$TYPE" = "oracleoccu" ]; then
	OCCU=$($DSMADMC -tab "select NODE_NAME,SUM(PHYSICAL_MB) as TOTAL_MB from occupancy where node_name in (select node_name from nodes where PLATFORM_NAME like '%Oracle%') and stgpool_name in (select stgpool_name from stgpools where POOLTYPE='PRIMARY') group by NODE_NAME order by TOTAL_MB desc fetch first 15 rows only")

	while read line; do
		NODE=$(echo "$line"|awk -F" " '{print $1}')
		MB=$(echo "$line"|awk -F" " '{print $2}')
		GB=$(echo "$MB"|awk -F. '{print $1/1024}')

		BACKUP_DATE=$($DSMADMC -tab "select BACKUP_DATE from backups where NODE_NAME='$NODE' order by BACKUP_DATE asc fetch first row only"|awk -F"." '{print $1}')

#		LL_NAME=$(echo "$line"|awk -F" " '{print $1}')
		echo "$NODE = $GB GB, oldest backup done $BACKUP_DATE"
	done <<< "$OCCU"

	exit $STATE_OK
fi

if [ "$TYPE" = "maxscratch" ]; then

	if [[ $WARN -le $CRIT ]]; then
		echo "Warn: $WARN is less than Crit: $CRIT"
		exit $STATE_UNKNOWN
	fi

	RESULT=$($DSMADMC "select MAXSCRATCH,NUMSCRATCHUSED from stgpools where stgpool_name='$STGP'")
	MAXSCRATCH=$(echo $RESULT | awk -F" " '{print $1}')
	NUMSCRATCHUSED=$(echo $RESULT | awk -F" " '{print $2}')

	echo "$NUMSCRATCHUSED scratch tapes used, $(($MAXSCRATCH-$NUMSCRATCHUSED)) left|'Scratch Tapes'=$NUMSCRATCHUSED;;;0;$MAXSCRATCH"

	if [[ $RESULT =~ .*"Unable to read output".* ]]; then
		exit $STATE_UNKNOWN
	fi

	if [[ $(($MAXSCRATCH-$NUMSCRATCHUSED)) -gt $WARN ]]; then
		exit $STATE_OK

	elif [[ $(($MAXSCRATCH-$NUMSCRATCHUSED)) -le $CRIT ]]; then
		exit $STATE_CRITICAL

	elif [[ $(($MAXSCRATCH-$NUMSCRATCHUSED)) -le $WARN ]]; then
		exit $STATE_WARNING

	else
		exit $STATE_UNKNOWN
	fi

fi

if [ "$TYPE" = "checklabel" ]; then
	CHECKLABEL=$($DSMADMC "select CHECKLABEL from drmstatus"|sed "s/ //g")

	if [ "$CHECKLABEL" = "No" ]; then
		echo "Checklabel is $CHECKLABEL"
		exit $STATE_OK
	else
		echo "Checklabel is $CHECKLABEL"
		exit $STATE_CRITICAL
	fi
	
fi

if [ "$TYPE" = "dbbexpiredays" ]; then
	DBBEXPIREDAYS=$($DSMADMC "select DBBEXPIREDAYS from drmstatus"|sed "s/ //g")

	if [[ "$DBBEXPIREDAYS" == "$LEVL" ]]; then
		echo "DBB Expire Days: $DBBEXPIREDAYS"
		exit $STATE_OK
	else
		echo "DBB Expire Days: $DBBEXPIREDAYS"
		exit $STATE_CRITICAL
	fi
	
fi

if [ "$TYPE" = "tape_issues" ]; then
	TAPES_RO=$($DSMADMC "select volume_name from volumes where (access='UNAVAILABLE' or access='READONLY' or access='OFFLINE' or WRITE_ERRORS>=1 or READ_ERRORS>=1) and location=''"|sed "s/ //g")
	TAPES_RO_NR=$(echo $TAPES_RO|wc -w|sed "s/ //g")

	if [[ $TAPES_RO =~ .*"ANR2034E".* ]]; then
		echo "No Tapes with issues|'Tapes RO UNAV'=0;;;;"
		exit $STATE_OK
	else
		echo "Tapes with issues: $TAPES_RO_NR|'Tapes with issues'=$TAPES_RO_NR;;;;"
		echo $TAPES_RO
		exit $STATE_WARNING
	fi
fi

if [ "$TYPE" = "backup_stg" ]; then
	PRIMARY_POOLS=$($DSMADMC "select stgpool_name from stgpools where pooltype='PRIMARY'"|sed "s/ //g")

	for STGPOOL in $PRIMARY_POOLS; do
		PRIMARY=$($DSMADMC "select cast(float(sum(logical_mb))/1024 as dec(8)) as GB from occupancy where stgpool_name='$STGPOOL'"|sed "s/ //g")
		if [ ! $PRIMARY ]; then
			PRIMARY=0
		fi
		PRIMARY_SUM=$(($PRIMARY_SUM + $PRIMARY))
	done

	COPY=$($DSMADMC "select cast(float(sum(logical_mb))/1024 as dec(8)) as GB from occupancy where stgpool_name='COPYPOOL'"|sed "s/ //g")
		if [ ! $COPY ]; then
			COPY=0
		fi

	if [[ $PRIMARY_SUM -eq "0" ]]; then
		echo "Primarys empty, nothing to do"
		exit $STATE_OK
	else 
		TO_BACKUP=$(($PRIMARY_SUM - $COPY))

		if [[ $TO_BACKUP -le "100" ]]; then
			echo "Holy shit, we made it! $TO_BACKUP GB to go.|'GB to backup'=$TO_BACKUP;;;;"
			exit $STATE_OK
		else
			echo "GB to backup: $TO_BACKUP|'GB to backup'=$TO_BACKUP;;;0;$TO_BACKUP"
			exit $STATE_WARNING
		fi
	fi
fi

if [ "$TYPE" = "oracle_backup" ]; then
	ORACLE_NODES=$($DSMADMC "select node_name from nodes where domain_name='ORACLE'"|sed "s/ //g")

	echo "Oracel Nodes to clean"

	for NODE in $ORACLE_NODES; do
		OLDEST_BACKUP=$($DSMADMC "select date(backup_date) from backups where node_name='$NODE' and backup_date < current_timestamp - $TIME days order by backup_date asc fetch first row only"|sed "s/ //g")

		if [[ "$OLDEST_BACKUP" =~ .*"ANR2034E".* ]]; then
			continue
		else
			ORACLE_BACKUP=$OLDEST_BACKUP
			echo "$NODE: $ORACLE_BACKUP"
		fi
	done


	if [ -n $ORACLE_BACKUP ]; then
		exit $STATE_OK
	else
		exit $STATE_WARNING
	fi

fi

if [ "$TYPE" = "DB_Duration" ]; then
        RESULT=$($DSMADMC "select end_time-start_time from SUMMARY where activity='FULL_DBBACKUP' order by start_time desc fetch first row only"|sed "s/ //g")
#		  echo $RESULT

#       SECONDS=$(echo $RESULT | sed 's/\([a-zA-Z: \t]\)//g' | cut -d . -f 1)
		SECONDS=$(echo $RESULT | awk -F"." '{print $1}')

		if [ $SECONDS > 39600 ]; then
			echo "DB BACKUP TAKING MORE THAN 11 HOURS|'seconds'=${SECONDS}s;;;;"
		exit $STATE_WARNING
		elif [ $SECONDS > 43200 ]; then
			echo "DB BACKUP TAKING MORE THAN 12 HOURS|'seconds'=${SECONDS}s;;;;"
		exit $STATE_CRITICAL
		else
			echo "DB Backup takes normal time|'seconds'=${SECONDS}s;;;;"
		exit $STATE_OK
	fi
fi

if [ $HELP ]; then
	echo "scratch - count scratch tapes in a library"
	echo "commands.cfg	check_nrpe -u -H $HOSTADDRESS$ -c check_tivoli_scratch -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG4$ -i $ARG1$ -u $ARG6$ -p $ARG7$ -w $ARG2$ -c $ARG3$ -b $ARG5$"
	echo "services.cfg:	check_tsm_scratch!INSTANCE!100!20!scratch!LIBRARY"
	echo ""
	echo "-db_used_pages-"
	echo "commands.cfg:	check_nrpe -t 30 -u -H $HOSTADDRESS$ -c check_tivoli -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG4$ -i $ARG1$ -u $ARG5$ -p $ARG6$ -w $ARG2$ -c $ARG3$"
	echo "services.cfg:	check_tsm!INSTANCE!0!0!db_used_pages"
	echo ""
	echo "-arclog-"
	echo "commands.cfg:	check_nrpe -t 30 -u -H $HOSTADDRESS$ -c check_tivoli -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ USER PASSWORD"
	echo "nrpe.cfg: 		check_tsm_sh -t $ARG4$ -i $ARG1$ -u $ARG6$ -p $ARG7$ -w $ARG2$ -c $ARG3$"
	echo "services.cfg: 	check_tsm!INSTANCE!5000!3000!arclog"
	echo ""
	echo "-actlog-"
	echo "commands.cfg:	check_nrpe -t 30 -u -H $HOSTADDRESS$ -c check_tivoli -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG4$ -i $ARG1$ -u $ARG6$ -p $ARG7$ -w $ARG2$ -c $ARG3$"
	echo "services.cfg:	check_tsm!INSTANCE!5000!3000!actlog"
	echo ""
	echo "-drives_online-"
	echo "commands.cfg:	"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG4$ -i $ARG1$ -u $ARG6$ -p $ARG7$ -w $ARG2$ -c $ARG3$ -b $ARG5$"
	echo "services.cfg:	"
	echo ""
	echo "-drive_util-"
	echo "commands.cfg:	check_nrpe -u -H $HOSTADDRESS$ -c check_tivoli_libr -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG4$ -i $ARG1$ -u $ARG6$ -p $ARG7$ -w $ARG2$ -c $ARG3$ -b $ARG5$"
	echo "services.cfg:	check_tsm_libr!INSTANCE!20!16!drives_online!TS3500A"
	echo ""
	echo "-session-"
	echo "commands.cfg:	check_nrpe -t 30 -u -H $HOSTADDRESS$ -c check_tivoli -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG4$ -i $ARG1$ -u $ARG5$ -p $ARG6$ -w $ARG2$ -c $ARG3$"
	echo "services.cfg:	check_tsm!INSTANCE!800!1000!session"
	echo ""
	echo "-reclaim-"
	echo "commands.cfg:	check_nrpe -t 30 -u -H $HOSTADDRESS$ -c check_tivoli_reclaim -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$ $ARG6$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG5$ -i $ARG1$ -s $ARG2$ -u $ARG6$ -p $ARG7$ -w $ARG3$ -c $ARG4$"
	echo "services.cfg:	check_tsm_reclaim!ess021_1!LTO!250!500!reclaim"
	echo ""
	echo "-waiting-"
	echo "commands.cfg:	check_nrpe -t 30 -u -H $HOSTADDRESS$ -c check_tivoli -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG4$ -i $ARG1$ -u $ARG5$ -p $ARG6$ -w $ARG2$ -c $ARG3$"
	echo "services.cfg:	check_tsm!INSTANCE!10!15!waiting"
	echo ""
	echo "-paths-"
	echo "commands.cfg:	check_nrpe -t 30 -u -H $HOSTADDRESS$ -c check_tivoli -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG4$ -i $ARG1$ -u $ARG5$ -p $ARG6$ -w $ARG2$ -c $ARG3$"
	echo "services.cfg:	check_tsm!INSTANCE!129!120!paths"
	echo ""
	echo "-stg-"
	echo "commands.cfg:	check_nrpe -u -H $HOSTADDRESS$ -c check_tivoli_stg -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG4$ -i $ARG1$ -u $ARG6$ -p $ARG7$ -w $ARG2$ -c $ARG3$ -s $ARG5$"
	echo "services.cfg:	check_tsm_stg!INSTANCE!90!98!stg!STG_NAME"
	echo ""
	echo "-dbb-"
	echo "commands.cfg:	check_nrpe -u -H $HOSTADDRESS$ -c check_tivoli_dbb -a $ARG1$ $ARG2$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG2$ -i $ARG1$ -u $ARG3$ -p $ARG4$"
	echo "services.cfg:	check_tsm_dbb!mcc201_1!dbb"
	echo ""
	echo "-occu-"
	echo "commands.cfg:	check_nrpe -t 30 -u -H $HOSTADDRESS$ -c check_tivoli -a $ARG1$ $ARG    2$ $ARG3$ $ARG4$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG4$ -i $ARG1$ -u $ARG5$ -p $ARG6$ -w $ARG2$ -c $ARG3$"
	echo "services.cfg:	check_tsm!INSTANCE!0!0!occu"
	echo ""
	echo "-client_level-"
	echo "commands.cfg:	check_nrpe -u -H $HOSTADDRESS$ -c check_tivoli_nodes -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG4$ -i $ARG1$ -u $ARG5$ -p $ARG6$ -v $ARG2$ -l $ARG3$"
	echo "services.cfg:	check_tsm_nodes!INSTANCE!6!2!client_level"
	echo ""
	echo "-sessionwait-"
	echo "commands.cfg:	check_nrpe -t 30 -u -H $HOSTADDRESS$ -c check_tivoli -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG4$ -i $ARG1$ -u $ARG5$ -p $ARG6$ -w $ARG2$ -c $ARG3$"
	echo "services.cfg:	check_tsm!INSTANCE!10!30!sessionwait"
	echo ""
	echo "-lastaccess-"
	echo "commands.cfg:	check_nrpe -t 60 -u -H $HOSTADDRESS$ -c check_tivoli_access -a $ARG1$ $ARG2$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t lastaccess -u $ARG3$ -p $ARG4$ -i $ARG1$ -c $ARG2$"
	echo "services.cfg:	check_tsm_access!ICINGA!180"
	echo ""
	echo "-alive-"
	echo "commands.cfg:	check_nrpe -t 60 -u -H $HOSTADDRESS$ -c check_tivoli_alive -a $ARG1$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t alive -u $ARG2$ -p $ARG3$ -i $ARG1$"
	echo "services.cfg:	check_tsm_alive!INSTANCE"
	echo ""
	echo "-maintenance-"
	echo "commands.cfg:	check_nrpe -t 30 -u -H $HOSTADDRESS$ -c check_tivoli_maintenance -a $ARG1$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t maintenance -u $ARG2$ -p $ARG3$ -i $ARG1$"
	echo "services.cfg:	check_tsm_maintenance!INSTANCE"
	echo ""
	echo "-nodecount-"
	echo "commands.cfg:	check_nrpe -u -H $HOSTADDRESS$ -c check_tivoli_nodecount -a $ARG1$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t nodecount -u $ARG2$ -p $ARG3$ -i $ARG1$"
	echo "services.cfg:	check_tsm_nodecount!INSTANCE"
	echo ""
	echo "-oracleoccu-"
	echo "commands.cfg:	check_nrpe -t 30 -u -H $HOSTADDRESS$ -c check_tivoli_oracleoccu -a $ARG1$ script senoga78"
	echo "nrpe.cfg:		check_tsm_sh -t oracleoccu -u $ARG2$ -p $ARG3$ -i $ARG1$"
	echo "services.cfg:	check_tsm_oracleoccu!INSTANCE"
	echo ""
	echo "-maxscratch-"
	echo "commands.cfg:	check_nrpe -u -H $HOSTADDRESS$ -c check_tivoli_maxscr -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG2$ -i $ARG1$ -s $ARG3$ -w $ARG4$ -c $ARG5$ -u $ARG6$ -p $ARG7$"
	echo "services.cfg:	check_tsm_maxscr!INSTANCE!maxscratch!STGPOOL_NAME!20!10"
	echo ""
	echo "-maxscratch-"
	echo "commands.cfg:	check_nrpe -u -H $HOSTADDRESS$ -c check_tivoli_maxscr -a $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG2$ -i $ARG1$ -s $ARG3$ -w $ARG4$ -c $ARG5$ -u $ARG6$ -p $ARG7$"
	echo "services.cfg:	check_tsm_maxscr!INSTANCE!maxscratch!STGPOOL_NAME!20!10"
	echo ""
	echo "-checklabel-"
	echo "commands.cfg:	check_nrpe -u -H $HOSTADDRESS$ -c ceck_tivoli_setting -a $ARG1$ $ARG2$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG2$ -i $ARG1$ -u $ARG3$ -p $ARG4$"
	echo "services.cfg:	check_tsm_setting!INSTANCE!checklabel"
	echo ""
	echo "-dbbexpiredays-"
	echo "commands.cfg:	check_nrpe -u -H $HOSTADDRESS$ -c ceck_tivoli_setting -a $ARG1$ $ARG2$ USER PASSWORD"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG2$ -i $ARG1$ -u $ARG3$ -p $ARG4$"
	echo "services.cfg:	check_tsm_setting!INSTANCE!dbbexpiredays"
	echo ""
	echo "-tape_issues-"
	echo "commands.cfg:	check_nrpe -u -H $HOSTADDRESS$ -c check_tape_issues -a $ARG1$ $ARG2$ script senoga78"
	echo "nrpe.cfg:		check_tsm_sh -t $ARG2$ -i $ARG1$ -u $ARG3$ -p $ARG4$"
	echo "services.cfg:	check_tape_issues!INSTANCE!tape_issues"
	echo ""
	echo "-backup_stg-"
	echo "commands.cfg:	check_nrpe -t 30 -u -H $HOSTADDRESS$ -c check_tivoli_bastg -a $ARG1$ script senoga78"
	echo "nrpe.cfg:		check_tsm_sh -t backup_stg -u $ARG2$ -p $ARG3$ -i $ARG1$"
	echo "services.cfg:	check_tsm_bastg!INSTANCE"
	echo ""
	echo "-oracle_backup-"
	echo "commands.cfg:	check_nrpe -t 90 -u -H $HOSTADDRESS$ -c check_tivoli_oracle_backup -a $ARG1$ $ARG2$ script senoga78"
	echo "nrpe.cfg:		check_tsm_sh -t oracle_backup -i $ARG1$ -f $ARG2$ -u $ARG3$ -p $ARG4$"
	echo "services.cfg:	check_tsm_oracle_backup!INSTANCE!DAYS"
fi

# Version History
# 20160825 1.20.2: Bugfix for paths online, did not report critical.
# 20160831 2.0.0: removed TSM user and password from arguments, moved to password file
# 20160831 2.0.1: TSM alive modified
# 20160906 2.0.2: extended last access to only show *DECOM nodes
# 20160922 2.1.1: removed blanks in front of TAPES_RO_NR
