Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # +-----------------------------------------------------------------------------------------+
- # | Dit script checked sessies van zimbra admin, imap synclisterner en soap |
- # | |
- # | Februari 2012 flip hess [email protected] |
- # +-----------------------------------------------------------------------------------------+
- # Global variables:
- PATH='/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin'
- SCRIPT_PATH="${0}"
- ARGS="${#}"
- ARG1="${1}"
- ARG3="${3}"
- ZIMBRA="sudo /opt/zimbra/bin/zmsoap -z -t admin -v DumpSessionsRequest"
- # ADMIN VALUES:
- WARNADMIN='3'
- CRITADMIN='5'
- # IMAP VALUES
- WARNIMAP='100'
- CRITIMAP='150'
- # SOAP VALUES
- WARNSOAP='10'
- CRITSOAP='15'
- # synclistener VALUES
- WARNSYNC='20'
- CRITSYNC='30'
- STATE_OK="0"
- STATE_WARNING="1"
- STATE_CRITICAL="2"
- STATE_UNKNOWN="3"
- # Functions:
- # exit function
- function die()
- {
- # output
- echo -e "Error in ${SCRIPT_PATH}:\n ${1}"
- # return state unknown
- exit ${STATE_UNKNOWN}
- }
- # Shows usage function.
- function fShowUsage()
- {
- echo -e "Usage: ${SCRIPT_PATH}\n
- Check Zimbra on Linux - [email protected]\n\nVersie 1.0"
- exit ${STATE_UNKNOWN}
- }
- # The main function.
- function fMain()
- {
- # script o depends on:
- [ -x /opt/zimbra/bin/zmsoap ] || die "This script depends on /opt/zimbra/bin/zmsoap"
- # check for arguments:
- [ ${ARGS} = 0 ] || fShowUsage
- # get output
- OUTPUT="$( ${ZIMBRA} )"
- # check for valid output
- ( echo "${OUTPUT}" | grep -q 'DumpSessionsRequest' ) || die "Unknown Output from ${ZIMBRA}"
- # get data
- SOAPINFO="$(echo -e "$OUTPUT" | grep 'soap activeAccounts' | tr -d "<>/")"
- SOAPSESSIONS="$( echo -e "$OUTPUT" | grep 'soap activeAccounts' | awk -F\" '{print $4}')"
- IMAPINFO="$( echo -e "$OUTPUT" | grep 'imap activeAccounts' | tr -d "<>/" )"
- IMAPSESSIONS="$( echo -e "$OUTPUT" | grep 'imap activeAccounts' | awk -F\" '{print $4}' )"
- ADMININFO="$( echo -e "$OUTPUT" | grep 'admin activeAccounts' | tr -d "<>/" )"
- ADMINSESSIONS="$( echo -e "$OUTPUT" | grep 'admin activeAccounts' | awk -F\" '{print $4}' )"
- SYNCINFO="$( echo -e "$OUTPUT" | grep 'synclistener activeAccounts' | tr -d "<>/" )"
- SYNCSESSIONS="$( echo -e "$OUTPUT" | grep 'synclistener activeAccounts' | awk -F\" '{print $4}' )"
- # be positive!
- WARN='0'
- CRIT='0'
- # make something SOAP
- if [ "${SOAPSESSIONS}" -lt "${WARNSOAP}" ] ; then
- SOAPSTATUS="SOAP OK"
- elif [ "${SOAPSESSIONS}" -gt "${WARNSOAP}" ] ; then
- SOAPSTATUS="SOAP WARNING - ${SOAPSESSIONS} > ${WARNSOAP}"
- WARN='1'
- elif [ "${SOAPSESSIONS}" -gt "${CRITSOAP}" ] ; then
- SOAPSTATUS="SOAP CRITICAL - ${SOAPSESSIONS} > ${CRITSOAP}"
- CRIT='1'
- fi
- # make something IMAP
- if [ "${IMAPSESSIONS}" -lt "${WARNIMAP}" ] ; then
- IMAPSTATUS='IMAP OK'
- elif [ "${IMAPSESSIONS}" -gt "${WARNIMAP}" ] ; then
- IMAPSTATUS="IMAP WARNING - ${IMAPSESSIONS} > ${CRITIMAP}"
- WARN='1'
- elif [ "${IMAPSESSIONS}" -gt "${CRITIMAP}" ] ; then
- IMAPSTATUS="IMAP CRITICAL - ${SOAPSESSIONS} > ${CRITSOAP}"
- CRIT='1'
- fi
- # make something ADMIN
- if [ "${ADMINSESSIONS}" -lt "${WARNADMIN}" ] ; then
- ADMINSTATUS="ADMIN OK"
- elif [ "${ADMINSESSIONS}" -gt "${WARNADMIN}" ] ; then
- ADMINSTATUS="ADMIN WARNING - ${ADMINSESSIONS} > ${WARNADMIN}"
- WARN='1'
- elif [ "${ADMINSESSIONS}" -gt "${CRITADMIN}" ] ; then
- ADMINSTATUS="ADMIN CRITICAL - ${ADMINSESSIONS} > ${CRITADMIN}"
- CRIT='1'
- fi
- # make something SYNC
- if [ "${SYNCSESSIONS}" -lt "${WARNSYNC}" ] ; then
- SYNCSTATUS="SYNC OK"
- elif [ "${SYNCSESSIONS}" -gt "${WARNSYNC}" ] ; then
- SYNCSTATUS="SYNC WARNING - ${SYNCSESSIONS} > ${WARNSYNC}"
- WARN='1'
- elif [ "${SYNCSESSIONS}" -gt "${CRITSYNC}" ] ; then
- SYNCSTATUS="SYNC CRITICAL - ${SYNCSESSIONS} > ${CRITSYNC}"
- CRIT='1'
- fi
- # make results
- if [ "${WARN}" != 0 ] ; then
- if [ "${CRIT}" != 0 ] ; then
- echo -e "CRITICAL - ${SOAPSTATUS} - ${IMAPSTATUS} - ${ADMINSTATUS} - ${SYNCSTATUS} |"
- echo -e "${SOAPINFO}\n${IMAPINFO}\n${ADMININFO}\n${SYNCINFO}"
- exit ${STATE_CRITICAL}
- elif [ "${CRIT}" = 0 ] ; then
- echo -e "WARNING - ${SOAPSTATUS} - ${IMAPSTATUS} - ${ADMINSTATUS} - ${SYNCSTATUS} |"
- echo -e "${SOAPINFO}\n${IMAPINFO}\n${ADMININFO}\n${SYNCINFO}"
- exit ${STATE_WARNING}
- fi
- elif [ "${WARN}" = 0 ] && [ "${CRIT}" = 0 ] ; then
- echo -e "OKAY - ${SOAPSTATUS} - ${IMAPSTATUS} - ${ADMINSTATUS} - ${SYNCSTATUS} |"
- echo -e "${SOAPINFO}\n${IMAPINFO}\n${ADMININFO}\n${SYNCINFO}"
- exit ${STATE_OK}
- fi
- }
- # Start the program:
- fMain
- # Exit with previous return code:
- exit "${?}"
Advertisement
Add Comment
Please, Sign In to add comment