Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # Last Modified: 2013-03-29
- #
- # until 2103-03-29 worked for SNR-ERD-2.0
- #
- # Paths to commands used in this script. These
- # may have to be modified to match your system setup.
- # TV: removed PATH restriction. Need to think more about what this means overall
- export PATH="/usr/bin:${PATH}"
- # required for bc to work
- export LC_ALL=C
- #DEBUG=1
- BC=$(which bc)
- if [ "${BC}" == "" ]
- then
- echo "# BC needed for perfomance info" >&2
- fi
- #
- ##
- #UTILS=(locate utils.sh |/bin/grep -E '^/usr' |head -n1)
- UTILS='/usr/local/icinga/libexec/utils.sh'
- UTILDIR=${UTILS%%/*}
- if [ ! -d "${UTILDIR}" ]
- then
- echo "ERROR! dir '${UTILDIR}' does not exist." >&2
- exit 1 # for nagios it means WARNING
- fi
- if [ -r "${UTILS}" ]
- then
- source "${UTILS}"
- else
- UTILNAME="${UTILS##*/}"
- echo "ERROR! file '${UTILNAME}' not found in '${UTILDIR}'" >&2
- exit 1
- fi
- #
- ECHO=$(which echo)
- PROGNAME=${0##*/}
- PROGPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
- REVISION="0.0.2"
- function print_usage()
- {
- ECHO=$(which echo)
- echo ""
- echo "Usage: ${PROGNAME} [OPTIONS]"
- echo ""
- echo "Options:"
- echo " --host-address|-H HOST : host to send query to. (default is 192.168.1.36)"
- echo " --mib|-m /full/patch/to/mib : full path to mib file."
- echo " --community|-C WORD : snmp community word."
- echo " -I INOPTS : Toggle various defaults controlling input parsing (see snmpget --help)."
- echo ""
- echo "Flags:"
- echo " --resetSmartContact6|-rsc6 : manualy reset 'smart contact'."
- echo " --monitorVoltageSignal|-mvs : check for voltage on monitored input."
- echo " --monitorAlarmSignalContact3|-masc3 : check for circuit between 1-3 contacts."
- echo " --monitorAnySensorSignal1contact4|-mass1c4 : check for circuit between 1-4 contacts."
- echo " --monitorAnySensorSignal2contact7|-mass2c7 : check for circuit between 1-7 contacts."
- echo " --monitorAnySensorSignal3contact9|-mass3c9 : check for circuit between 1-9 contacts."
- echo ""
- echo "Other flags:"
- echo " --show-defaults : print defaults and exit"
- echo " --version|-V : print version information and exit"
- echo " --debug|-d : debug mode"
- echo " --help|-h : display this help screen and exit"
- echo ""
- }
- #
- function print_help() {
- print_revision $PROGNAME $REVISION
- echo ""
- print_usage
- echo ""
- support
- }
- #
- ## Make sure the correct number of command line
- ## arguments have been supplied
- #
- if [ $# -lt 1 ]; then
- print_usage
- exit $STATE_UNKNOWN
- fi
- [ -n "${DEBUG}" ] && echo -n "$(date +%F-%T) ${@}" >> "/var/log/icinga/erd-$(date +%F).log"
- #
- RM=$(which rm)
- AWK=$(which awk)
- CAT=$(which cat)
- TEE=$(which tee)
- TEEOPTS="-a"
- SED=$(which sed)
- GREP=$(which grep)
- GREPOPTS="-i"
- DIFF=$(which diff)
- SORT=$(which sort)
- UNIQ=$(which uniq)
- DATE=$(which date)
- SUDO=$(which sudo)
- SUDOPTS="-n"
- TAIL=$(which tail)
- MKDIR=$(which mkdir)
- MKDIROPTS="-p"
- MYSQL=$(which mysql)
- CHMOD=$(which chmod)
- TOUCH=$(which touch)
- PRINTF=$(which printf)
- PRINTFOPTS="%.03f"
- #
- SNMPSET=$(which snmpset)
- SNMPGET=$(which snmpget)
- #
- exitstatus=$STATE_UNKNOWN #default
- # simple getopt mech for debug and comfort purposes
- while test $# -gt 0
- do
- case "$1" in
- --host|-H)
- shift
- HOST=$1
- shift
- ;;
- --mib|-m)
- shift
- MIB=$1
- shift
- ;;
- --comunity|-C)
- shift
- COMUNITY=$1
- shift
- ;;
- -I)
- shift
- SNMPOPTIONS=$1
- shift
- ;;
- --resetNumberOfResetPositives|-rnorp)
- RESETNUMBEROFRESETPOSITIVES=1
- shift
- ;;
- --resetSmartContact6|-rsc6)
- RESETSMARTCONTACT6=1
- shift
- ;;
- --monitorVoltageSignal|-mvs)
- MONITORVOLTAGESIGNAL=1
- shift
- ;;
- --monitorAlarmSignalContact3|-masc3)
- MONITORALARMSIGNALCONTACT3=1
- shift
- ;;
- --monitorAnySensorSignal1contact4|-mass1c4)
- MONITORANYSENSORSIGNAL1CONTACT4=1
- shift
- ;;
- --monitorAnySensorSignal2contact7|-mass2c7)
- MONITORANYSENSORSIGNAL2CONTACT7=1
- shift
- ;;
- --monitorAnySensorSignal3contact9|-mass3c9)
- MONITORANYSENSORSIGNAL3CONTACT9=1
- shift
- ;;
- --show-defaults)
- SHOWDEFAULTS=1
- echo '##' >&2
- echo "# SHOWDEFAULTS mode ON." >&2
- echo '###' >&2
- shift
- ;;
- --debug|-d)
- DEBUG=1
- echo '##' >&2
- echo "# DEBUG mode ON." >&2
- echo '#' >&2
- shift
- ;;
- --help|-h)
- print_help
- exit $STATE_UNKNOWN
- ;;
- --version|-V)
- print_revision $PROGNAME $REVISION
- exit $STATE_UNKNOWN
- ;;
- *)
- echo '##' >&2
- echo "# $* ignored." >&2
- echo '#' >&2
- print_usage
- break
- ;;
- esac
- done
- #
- START=$( ${PRINTF} "${PRINTFOPTS}" $( ${DATE} +%s.%N ) )
- #
- if [ -n "${SHOWDEFAULTS}" ]
- then
- echo "# MIB = ${MIB}" >&2
- echo "# HOST = ${HOST}" >&2
- echo "# SNMPGET = ${SNMPGET}" >&2
- echo "# SNMPSET = ${SNMPSET}" >&2
- echo "# COMUNITY = ${COMUNITY}" >&2
- echo "# SNMPOPTIONS = ${SNMPOPTIONS}" >&2
- echo "# RESETSMARTCONTACT6 = ${RESETSMARTCONTACT6}" >&2
- echo "# MONITORVOLTAGESIGNAL = ${MONITORVOLTAGESIGNAL}" >&2
- echo "# MONITORALARMSIGNALCONTACT3 = ${MONITORALARMSIGNALCONTACT3}" >&2
- echo "# MONITORANYSENSORSIGNAL1CONTACT4 = ${MONITORANYSENSORSIGNAL1CONTACT4}" >&2
- echo "# MONITORANYSENSORSIGNAL2CONTACT7 = ${MONITORANYSENSORSIGNAL2CONTACT7}" >&2
- echo "# MONITORANYSENSORSIGNAL3CONTACT9 = ${MONITORANYSENSORSIGNAL3CONTACT9}" >&2
- fi
- #
- if [ -z "${MIB}" ]
- then
- MIB="/home/scripts/erd/mibs/erd-2.0.mib"
- MIB="/home/scripts/erd/mibs/erd-2.0-rev1.mib"
- fi
- if [ -z "${COMUNITY}" ]
- then
- COMUNITY="public"
- fi
- if [ -z "${HOST}" ]
- then
- HOST="192.168.1.36"
- fi
- if [ -z "${SNMPVERSION}" ]
- then
- SNMPVERSION="1"
- fi
- if [ -z "${SNMPOPTIONS}" ]
- then
- SNMPOPTIONS="u"
- fi
- #
- if [ -n "${RESETNUMBEROFRESETPOSITIVES}" ]
- then
- OID="numberOfResetPositives.0 i 0"
- if [ -n "${DEBUG}" ]
- then
- echo "# Resetting numberOfResetPositives.." >&2
- echo "# ${SNMPSET} -P${SNMPOPTIONS} -m${MIB} -v${SNMPVERSION} -c${COMUNITY} ${HOST} ${OID}" >&2
- echo "#" >&2
- fi
- # snmpget -Pu -m /home/scripts/mibs/erd-2.0-rev2.mib -v1 -c public 192.168.1.36 resetSmartContact6.0
- RESPONSE=$( ${SNMPSET} -P"${SNMPOPTIONS}" -m"${MIB}" -v"${SNMPVERSION}" -c"${COMUNITY}" ${HOST} ${OID} )
- STATE=$( echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "resetPositives" &>/dev/null )
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD OK - SmartContact been resetted"
- exitstatus="${STATE_OK}"
- else
- MESSAGE="ERD CRITICAL - command returned '${STATE}'"
- exitstatus="${STATE_CRITICAL}"
- fi
- fi
- #
- if [ -n "${RESETSMARTCONTACT6}" ]
- then
- OID="resetSmartContact6.0 i 1"
- if [ -n "${DEBUG}" ]
- then
- echo "# Resetting SmartContact6.." >&2
- echo "# ${SNMPSET} -P${SNMPOPTIONS} -m${MIB} -v${SNMPVERSION} -c${COMUNITY} ${HOST} ${OID}" >&2
- echo "#" >&2
- fi
- # snmpget -Pu -m /home/scripts/mibs/erd-2.0-rev2.mib -v1 -c public 192.168.1.36 resetSmartContact6.0
- RESPONSE=$( ${SNMPSET} -P"${SNMPOPTIONS}" -m"${MIB}" -v"${SNMPVERSION}" -c"${COMUNITY}" ${HOST} ${OID} )
- STATE=$( echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "bypass" &>/dev/null )
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD OK - SmartContact been resetted"
- exitstatus="${STATE_OK}"
- else
- MESSAGE="ERD CRITICAL - command returned '${STATE}'"
- exitstatus="${STATE_CRITICAL}"
- fi
- fi
- #
- if [ -n "${MONITORVOLTAGESIGNAL}" ]
- then
- OID="monitorVoltageSignal.0 i 3"
- if [ -n "${DEBUG}" ]
- then
- echo "# monitoring voltage signal.." >&2
- echo "# ${SNMPSET} -P${SNMPOPTIONS} -m${MIB} -v${SNMPVERSION} -c${COMUNITY} ${HOST} ${OID}" >&2
- echo "#" >&2
- fi
- RESPONSE=$( ${SNMPSET} -P"${SNMPOPTIONS}" -m"${MIB}" -v"${SNMPVERSION}" -c"${COMUNITY}" ${HOST} ${OID} )
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "sensorOff" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD UNKNOWN - Voltage Sensor is turned Off."
- exitstatus="${STATE_UNKNOWN}"
- fi
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "voltageIsYes" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD OK - Voltage is present."
- exitstatus="${STATE_OK}"
- fi
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "voltageIsNo" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD CRITICAL - Voltage is NOT present."
- exitstatus="${STATE_CRITICAL}"
- fi
- fi
- ##
- if [ -n "${MONITORALARMSIGNALCONTACT3}" ]
- then
- OID="monitorAlarmSignalContact3.0 i 3"
- if [ -n "${DEBUG}" ]
- then
- echo "# monitoring alarm signal (contact 3).." >&2
- echo "# ${SNMPSET} -P${SNMPOPTIONS} -m${MIB} -v${SNMPVERSION} -c${COMUNITY} ${HOST} ${OID}" >&2
- echo "#" >&2
- fi
- RESPONSE=$( ${SNMPSET} -P"${SNMPOPTIONS}" -m"${MIB}" -v"${SNMPVERSION}" -c"${COMUNITY}" ${HOST} ${OID} )
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "sensorOff" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD UNKNOWN - Sensor is turned Off."
- exitstatus="${STATE_UNKNOWN}"
- fi
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "doorIsClose" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD OK - Door is Closed."
- exitstatus="${STATE_OK}"
- fi
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "doorIsOpen" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD CRITICAL - Door is Open."
- exitstatus="${STATE_CRITICAL}"
- fi
- fi
- if [ -n "${MONITORANYSENSORSIGNAL1CONTACT4}" ]
- then
- OID="monitorAnySensorSignal1contact4.0 i 3"
- if [ -n "${DEBUG}" ]
- then
- echo "# monitoring Any Sensor Signal 1 (contact 4).." >&2
- echo "# ${SNMPSET} -P${SNMPOPTIONS} -m${MIB} -v${SNMPVERSION} -c${COMUNITY} ${HOST} ${OID}" >&2
- echo "#" >&2
- fi
- RESPONSE=$( ${SNMPSET} -P"${SNMPOPTIONS}" -m"${MIB}" -v"${SNMPVERSION}" -c"${COMUNITY}" ${HOST} ${OID} )
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "sensorOff" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD UNKNOWN - Sensor is turned Off."
- exitstatus="${STATE_UNKNOWN}"
- fi
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "sensorIs_0" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD OK - contact 4 is closed."
- exitstatus="${STATE_OK}"
- fi
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "sensorIs_1" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD CRITICAL - contact 4 is open."
- exitstatus="${STATE_CRITICAL}"
- fi
- fi
- if [ -n "${MONITORANYSENSORSIGNAL2CONTACT7}" ]
- then
- OID="monitorAnySensorSignal2contact7.0 i 3"
- if [ -n "${DEBUG}" ]
- then
- echo "# monitoring Any Sensor Signal 2 (contact 7).." >&2
- echo "# ${SNMPSET} -P${SNMPOPTIONS} -m${MIB} -v${SNMPVERSION} -c${COMUNITY} ${HOST} ${OID}" >&2
- echo "#" >&2
- fi
- RESPONSE=$( ${SNMPSET} -P"${SNMPOPTIONS}" -m"${MIB}" -v"${SNMPVERSION}" -c"${COMUNITY}" ${HOST} ${OID} )
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "sensorOff" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD UNKNOWN - Sensor is turned Off."
- exitstatus="${STATE_UNKNOWN}"
- fi
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "sensorIs_0" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD OK - contact 7 is closed."
- exitstatus="${STATE_OK}"
- fi
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "sensorIs_1" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD CRITICAL - contact 7 is open."
- exitstatus="${STATE_CRITICAL}"
- fi
- fi
- if [ -n "${MONITORANYSENSORSIGNAL3CONTACT9}" ]
- then
- OID="monitorAnySensorSignal3contact9.0 i 3"
- if [ -n "${DEBUG}" ]
- then
- echo "# monitoring Any Sensor Signal 3 (contact 9).." >&2
- echo "# ${SNMPSET} -P${SNMPOPTIONS} -m${MIB} -v${SNMPVERSION} -c${COMUNITY} ${HOST} ${OID}" >&2
- echo "#" >&2
- fi
- RESPONSE=$( ${SNMPSET} -P"${SNMPOPTIONS}" -m"${MIB}" -v"${SNMPVERSION}" -c"${COMUNITY}" ${HOST} ${OID} )
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "sensorOff" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD UNKNOWN - Sensor is turned Off."
- exitstatus="${STATE_UNKNOWN}"
- fi
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "sensorIs_0" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD OK - contact 9 is closed."
- exitstatus="${STATE_OK}"
- fi
- echo "${RESPONSE}" |${GREP} "${GREPOPTS}" "sensorIs_1" &>/dev/null
- if [ "$?" -eq 0 ]
- then
- MESSAGE="ERD CRITICAL - contact 9 is open."
- exitstatus="${STATE_CRITICAL}"
- fi
- fi
- if [ -n "${MESSAGE}" ]
- then
- echo -n "${MESSAGE}"
- else
- echo -n "UNKNOWN"
- fi
- END=$( ${PRINTF} "${PRINTFOPTS}" $( ${DATE} +%s.%N ) )
- PRECISION="3"
- PRINTFOPTS="%0*.*f"
- DIFF=$( ${PRINTF} "${PRINTFOPTS}" 1 ${PRECISION} $( echo "$END - $START" | ${BC} ) )
- [ -n "${DEBUG}" ] && echo " | TIME=${DIFF}" |${TEE} "${TEEOPTS}" "/var/log/icinga/erd-$(date +%F).log"
- if [ -n "${DEBUG}" ]
- then
- echo "# START = ${START}" >&2
- echo "# END = ${END}" >&2
- echo "# DIFF = ${DIFF}" >&2
- if
- exit "${exitstatus}"
- exit "${STATE_UNKNOWN}"
- exit "${STATE_OK}"
- exit "${STATE_WARNING}"
- exit "${STATE_CRITICAL}"
- exit "${STATE_DEPENDENT}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement