Nagios check fortisandbox queue

From Initech Technical Wiki
Jump to: navigation, search
#!/bin/bash
#
#   File name	 : check_fortisandbox_queue
#
#   Created by	 : Tim Price - Initech Consulting Limit (tim@initech.co.nz)
#   Created date : 05-01-2018
#   Version	 : 1.0
#
#   Information  : Check the total number of files in the FortiSandbox processing queues
#
#   Usage:
#   check_fortisandbox_queue [hostname] [snmp_community] [queue_warning_level] [queue_critical_level] [total_queue_warning_level] [total_queue_critical_level]
#

SNMP_HOST=${1}
SNMP_COMM=${2}
WARN_LEVEL=${3}
CRIT_LEVEL=${4}
TOTAL_WARN_LEVEL=${5}
TOTAL_CRIT_LEVEL=${6}
EXIT_CODE=0

## Error if no ARG is given

if [[ $# -lt 6 ]]
then
	echo "Error - Not enough arguments: hostname (1), snmp_community (2), queue_warning_level (3) queue_critical_level (4) total_queue_warning_level (5) total_queue_critical_level (6)"
        exit 3
else
	# Check the queue length of executable files
	QUEUE=$(snmpget -v2c -c ${SNMP_COMM} ${SNMP_HOST} .1.3.6.1.4.1.12356.118.5.1.1.0 | awk '{print $4}')
	TOTAL_QUEUE=$[TOTAL_QUEUE+QUEUE]
	if [[ ${QUEUE} -ge ${CRIT_LEVEL} ]]; then
		echo "CRITICAL - Executables/DLL/VBS/BAT/PS1/JAR/MSI queue size: ${QUEUE}"
		EXIT_CODE=2	
	elif [[ ${QUEUE} -ge ${WARN_LEVEL} ]]; then	
		echo "WARNING - Executables/DLL/VBS/BAT/PS1/JAR/MSI queue size: ${QUEUE}"
		if [ ${EXIT_CODE} -eq 0 ]; then
			EXIT_CODE=1
		fi
	else
		echo "OK - Executables/DLL/VBS/BAT/PS1/JAR/MSI queue size: ${QUEUE}"
	fi

        # Check the queue length of PDF files
        QUEUE=$(snmpget -v2c -c ${SNMP_COMM} ${SNMP_HOST} .1.3.6.1.4.1.12356.118.5.1.2.0 | awk '{print $4}')
	TOTAL_QUEUE=$[TOTAL_QUEUE+QUEUE]
        if [[ ${QUEUE} -ge ${CRIT_LEVEL} ]]; then
                echo "CRITICAL - PDF file queue size: ${QUEUE}"
                EXIT_CODE=2
        elif [[ ${QUEUE} -ge ${WARN_LEVEL} ]]; then
                echo "WARNING - PDF file queue size: ${QUEUE}"
                if [ ${EXIT_CODE} -eq 0 ]; then
                        EXIT_CODE=1
                fi
        else
                echo "OK - PDF file queue size: ${QUEUE}"
        fi

        # Check the queue length of office document files
        QUEUE=$(snmpget -v2c -c ${SNMP_COMM} ${SNMP_HOST} .1.3.6.1.4.1.12356.118.5.1.3.0 | awk '{print $4}')
        TOTAL_QUEUE=$[TOTAL_QUEUE+QUEUE]
        if [[ ${QUEUE} -ge ${CRIT_LEVEL} ]]; then
                echo "CRITICAL - Office document queue size: ${QUEUE}"
                EXIT_CODE=2
        elif [[ ${QUEUE} -ge ${WARN_LEVEL} ]]; then
                echo "WARNING - Office document queue size: ${QUEUE}"
                if [ ${EXIT_CODE} -eq 0 ]; then
                        EXIT_CODE=1
                fi
        else
                echo "OK - Office document queue size: ${QUEUE}"
        fi

        # Check the queue length of shockwave flash animation files
        QUEUE=$(snmpget -v2c -c ${SNMP_COMM} ${SNMP_HOST} .1.3.6.1.4.1.12356.118.5.1.4.0 | awk '{print $4}')
        TOTAL_QUEUE=$[TOTAL_QUEUE+QUEUE]
        if [[ ${QUEUE} -ge ${CRIT_LEVEL} ]]; then
                echo "CRITICAL - Flash file queue size: ${QUEUE}"
                EXIT_CODE=2
        elif [[ ${QUEUE} -ge ${WARN_LEVEL} ]]; then
                echo "WARNING - Flash file queue size: ${QUEUE}"
                if [ ${EXIT_CODE} -eq 0 ]; then
                        EXIT_CODE=1
                fi
        else
                echo "OK - Flash file queue size: ${QUEUE}"
        fi

        # Check the queue length of web type files
        QUEUE=$(snmpget -v2c -c ${SNMP_COMM} ${SNMP_HOST} .1.3.6.1.4.1.12356.118.5.1.5.0 | awk '{print $4}')
        TOTAL_QUEUE=$[TOTAL_QUEUE+QUEUE]
        if [[ ${QUEUE} -ge ${CRIT_LEVEL} ]]; then
                echo "CRITICAL - Web file queue size: ${QUEUE}"
                EXIT_CODE=2
        elif [[ ${QUEUE} -ge ${WARN_LEVEL} ]]; then
                echo "WARNING - Web file queue size: ${QUEUE}"
                if [ ${EXIT_CODE} -eq 0 ]; then
                        EXIT_CODE=1
                fi
        else
                echo "OK - Web file queue size: ${QUEUE}"
        fi

        # Check the queue length of android files
        QUEUE=$(snmpget -v2c -c ${SNMP_COMM} ${SNMP_HOST} .1.3.6.1.4.1.12356.118.5.1.6.0 | awk '{print $4}')
        TOTAL_QUEUE=$[TOTAL_QUEUE+QUEUE]
        if [[ ${QUEUE} -ge ${CRIT_LEVEL} ]]; then
                echo "CRITICAL - Android file queue size: ${QUEUE}"
                EXIT_CODE=2
        elif [[ ${QUEUE} -ge ${WARN_LEVEL} ]]; then
                echo "WARNING - Android file queue size: ${QUEUE}"
                if [ ${EXIT_CODE} -eq 0 ]; then
                        EXIT_CODE=1
                fi
        else
                echo "OK - Android file queue size: ${QUEUE}"
        fi

        # Check the queue length of android files again - There is a duplicate in the MIB for some reason
        QUEUE=$(snmpget -v2c -c ${SNMP_COMM} ${SNMP_HOST} .1.3.6.1.4.1.12356.118.5.1.7.0 | awk '{print $4}')
        TOTAL_QUEUE=$[TOTAL_QUEUE+QUEUE]
        if [[ ${QUEUE} -ge ${CRIT_LEVEL} ]]; then
                echo "CRITICAL - Android(2) file queue size: ${QUEUE}"
                EXIT_CODE=2
        elif [[ ${QUEUE} -ge ${WARN_LEVEL} ]]; then
                echo "WARNING - Android(2) file queue size: ${QUEUE}"
                if [ ${EXIT_CODE} -eq 0 ]; then 
                        EXIT_CODE=1
                fi
        else
                echo "OK - Android(2) file queue size: ${QUEUE}"
        fi

        # Check the queue length of URLs - Commonly from emails
        QUEUE=$(snmpget -v2c -c ${SNMP_COMM} ${SNMP_HOST} .1.3.6.1.4.1.12356.118.5.1.8.0 | awk '{print $4}')
        TOTAL_QUEUE=$[TOTAL_QUEUE+QUEUE]
        if [[ ${QUEUE} -ge ${CRIT_LEVEL} ]]; then
                echo "CRITICAL - URL job queue size: ${QUEUE}"
                EXIT_CODE=2
        elif [[ ${QUEUE} -ge ${WARN_LEVEL} ]]; then
                echo "WARNING - URL job queue size: ${QUEUE}"
                if [ ${EXIT_CODE} -eq 0 ]; then
                        EXIT_CODE=1
                fi
        else
                echo "OK - URL job queue size: ${QUEUE}"
        fi

        # Check the queue length of user defined file extensions
        QUEUE=$(snmpget -v2c -c ${SNMP_COMM} ${SNMP_HOST} .1.3.6.1.4.1.12356.118.5.1.9.0 | awk '{print $4}')
        TOTAL_QUEUE=$[TOTAL_QUEUE+QUEUE]
        if [[ ${QUEUE} -ge ${CRIT_LEVEL} ]]; then
                echo "CRITICAL - User defined file queue size: ${QUEUE}"
                EXIT_CODE=2
        elif [[ ${QUEUE} -ge ${WARN_LEVEL} ]]; then
                echo "WARNING - User defined file queue size: ${QUEUE}"
                if [ ${EXIT_CODE} -eq 0 ]; then
                        EXIT_CODE=1
                fi
        else
                echo "OK - User defined file queue size: ${QUEUE}"
        fi

        # Check the queue length of non-sandbox files - Not sure what this is for
        QUEUE=$(snmpget -v2c -c ${SNMP_COMM} ${SNMP_HOST} .1.3.6.1.4.1.12356.118.5.1.10.0 | awk '{print $4}')
        TOTAL_QUEUE=$[TOTAL_QUEUE+QUEUE]
        if [[ ${QUEUE} -ge ${CRIT_LEVEL} ]]; then
                echo "CRITICAL - Non sandbox file queue size: ${QUEUE}"
                EXIT_CODE=2
        elif [[ ${QUEUE} -ge ${WARN_LEVEL} ]]; then
                echo "WARNING - Non sandbox file queue size: ${QUEUE}"
                if [ ${EXIT_CODE} -eq 0 ]; then
                        EXIT_CODE=1
                fi
        else
                echo "OK - Non sandbox file queue size: ${QUEUE}"
        fi

        # Check the queue length of unassigned files - These are files that are yet to be assigned to a queue above
        QUEUE=$(snmpget -v2c -c ${SNMP_COMM} ${SNMP_HOST} .1.3.6.1.4.1.12356.118.5.1.11.0 | awk '{print $4}')
        TOTAL_QUEUE=$[TOTAL_QUEUE+QUEUE]
        if [[ ${QUEUE} -ge ${CRIT_LEVEL} ]]; then
                echo "CRITICAL - Unassigned file queue size: ${QUEUE}"
                EXIT_CODE=2
        elif [[ ${QUEUE} -ge ${WARN_LEVEL} ]]; then
                echo "WARNING - Unassigned file queue size: ${QUEUE}"
                if [ ${EXIT_CODE} -eq 0 ]; then
                        EXIT_CODE=1
                fi
        else
                echo "OK - Unassigned file queue size: ${QUEUE}"
        fi

	# Check the sumtotal of all files in all queues
        if [[ ${TOTAL_QUEUE} -ge ${TOTAL_CRIT_LEVEL} ]]; then
                echo "CRITICAL - Total queue size: ${QUEUE}"
                EXIT_CODE=2
        elif [[ ${TOTAL_QUEUE} -ge ${TOTAL_WARN_LEVEL} ]]; then
                echo "WARNING - Total queue size: ${QUEUE}"
                if [ ${EXIT_CODE} -eq 0 ]; then
                        EXIT_CODE=1
                fi
        else
                echo "OK - Total queue size: ${QUEUE}"
        fi

	exit $EXIT_CODE
fi