flipje

nagios_check_zimbrasessions

Mar 9th, 2012
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.02 KB | None | 0 0
  1. #!/bin/bash
  2. # +-----------------------------------------------------------------------------------------+
  3. # |  Dit script checked sessies van zimbra admin, imap synclisterner en soap                |
  4. # |                                                                                         |
  5. # | Februari 2012 flip hess [email protected]                                             |
  6. # +-----------------------------------------------------------------------------------------+
  7.  
  8. # Global variables:
  9.  
  10. PATH='/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin'
  11. SCRIPT_PATH="${0}"
  12. ARGS="${#}"
  13. ARG1="${1}"
  14. ARG3="${3}"
  15.  
  16. ZIMBRA="sudo /opt/zimbra/bin/zmsoap -z -t admin -v DumpSessionsRequest"
  17.  
  18. # ADMIN VALUES:
  19. WARNADMIN='3'
  20. CRITADMIN='5'
  21.  
  22. # IMAP VALUES
  23. WARNIMAP='100'
  24. CRITIMAP='150'
  25.  
  26. # SOAP VALUES
  27. WARNSOAP='10'
  28. CRITSOAP='15'
  29.  
  30. # synclistener VALUES
  31. WARNSYNC='20'
  32. CRITSYNC='30'
  33.  
  34. STATE_OK="0"
  35. STATE_WARNING="1"
  36. STATE_CRITICAL="2"
  37. STATE_UNKNOWN="3"
  38.  
  39. # Functions:
  40.  
  41.   # exit function
  42.   function die()
  43.   {
  44.     # output
  45.     echo -e "Error in ${SCRIPT_PATH}:\n ${1}"
  46.  
  47.     # return state unknown
  48.     exit ${STATE_UNKNOWN}
  49.   }
  50.  
  51.   # Shows usage function.
  52.   function fShowUsage()
  53.   {
  54.     echo -e "Usage: ${SCRIPT_PATH}\n
  55.    Check Zimbra on Linux - [email protected]\n\nVersie 1.0"
  56.  
  57.     exit ${STATE_UNKNOWN}
  58.   }
  59.  
  60.   # The main function.
  61.   function fMain()
  62.   {
  63.     # script o depends on:
  64.     [ -x /opt/zimbra/bin/zmsoap ] || die "This script depends on /opt/zimbra/bin/zmsoap"
  65.  
  66.     # check for arguments:
  67.     [ ${ARGS} = 0 ] || fShowUsage
  68.  
  69.     # get output
  70.     OUTPUT="$( ${ZIMBRA} )"
  71.  
  72.     # check for valid output
  73.     ( echo "${OUTPUT}" | grep -q 'DumpSessionsRequest' ) || die "Unknown Output from ${ZIMBRA}"
  74.  
  75.     # get data  
  76.     SOAPINFO="$(echo -e "$OUTPUT" | grep 'soap activeAccounts' | tr -d "<>/")"
  77.     SOAPSESSIONS="$( echo -e "$OUTPUT" | grep 'soap activeAccounts' | awk -F\" '{print $4}')"
  78.  
  79.     IMAPINFO="$( echo -e "$OUTPUT" | grep 'imap activeAccounts' | tr -d "<>/" )"
  80.     IMAPSESSIONS="$( echo -e "$OUTPUT" | grep 'imap activeAccounts' | awk -F\" '{print $4}' )"
  81.    
  82.     ADMININFO="$( echo -e "$OUTPUT" | grep 'admin activeAccounts' | tr -d "<>/" )"
  83.     ADMINSESSIONS="$( echo -e "$OUTPUT" | grep 'admin activeAccounts' | awk -F\" '{print $4}' )"
  84.  
  85.     SYNCINFO="$( echo -e "$OUTPUT" | grep 'synclistener activeAccounts' | tr -d "<>/" )"
  86.     SYNCSESSIONS="$( echo -e "$OUTPUT" | grep 'synclistener activeAccounts' | awk -F\" '{print $4}' )"
  87.  
  88.     # be positive!
  89.     WARN='0'
  90.     CRIT='0'
  91.  
  92.     # make something SOAP
  93.     if [ "${SOAPSESSIONS}" -lt "${WARNSOAP}" ] ; then
  94.        SOAPSTATUS="SOAP OK"
  95.     elif [ "${SOAPSESSIONS}" -gt "${WARNSOAP}" ] ; then
  96.        SOAPSTATUS="SOAP WARNING - ${SOAPSESSIONS} > ${WARNSOAP}"
  97.        WARN='1'
  98.     elif [ "${SOAPSESSIONS}" -gt "${CRITSOAP}" ] ; then
  99.        SOAPSTATUS="SOAP CRITICAL - ${SOAPSESSIONS} > ${CRITSOAP}"
  100.        CRIT='1'
  101.     fi
  102.  
  103.     # make something IMAP
  104.     if [ "${IMAPSESSIONS}" -lt "${WARNIMAP}" ] ; then
  105.        IMAPSTATUS='IMAP OK'
  106.     elif [ "${IMAPSESSIONS}" -gt "${WARNIMAP}" ] ; then
  107.        IMAPSTATUS="IMAP WARNING - ${IMAPSESSIONS} > ${CRITIMAP}"
  108.        WARN='1'
  109.     elif [ "${IMAPSESSIONS}" -gt "${CRITIMAP}" ] ; then
  110.        IMAPSTATUS="IMAP CRITICAL - ${SOAPSESSIONS} > ${CRITSOAP}"
  111.        CRIT='1'
  112.     fi
  113.  
  114.     # make something ADMIN
  115.     if [ "${ADMINSESSIONS}" -lt "${WARNADMIN}" ] ; then
  116.        ADMINSTATUS="ADMIN OK"
  117.     elif [ "${ADMINSESSIONS}" -gt "${WARNADMIN}" ] ; then
  118.        ADMINSTATUS="ADMIN WARNING - ${ADMINSESSIONS} > ${WARNADMIN}"
  119.        WARN='1'
  120.     elif [ "${ADMINSESSIONS}" -gt "${CRITADMIN}" ] ; then
  121.        ADMINSTATUS="ADMIN CRITICAL - ${ADMINSESSIONS} > ${CRITADMIN}"
  122.        CRIT='1'
  123.     fi
  124.  
  125.     # make something SYNC
  126.     if [ "${SYNCSESSIONS}" -lt "${WARNSYNC}" ] ; then
  127.        SYNCSTATUS="SYNC OK"
  128.     elif [ "${SYNCSESSIONS}" -gt "${WARNSYNC}" ] ; then
  129.        SYNCSTATUS="SYNC WARNING - ${SYNCSESSIONS} > ${WARNSYNC}"
  130.        WARN='1'
  131.     elif [ "${SYNCSESSIONS}" -gt "${CRITSYNC}" ] ; then
  132.        SYNCSTATUS="SYNC CRITICAL - ${SYNCSESSIONS} > ${CRITSYNC}"
  133.        CRIT='1'
  134.     fi
  135.    
  136.     # make results
  137.     if [ "${WARN}" != 0 ] ; then
  138.         if [ "${CRIT}" != 0 ] ; then
  139.            echo -e "CRITICAL - ${SOAPSTATUS} - ${IMAPSTATUS} - ${ADMINSTATUS} - ${SYNCSTATUS} |"
  140.            echo -e "${SOAPINFO}\n${IMAPINFO}\n${ADMININFO}\n${SYNCINFO}"
  141.            exit ${STATE_CRITICAL}
  142.         elif [ "${CRIT}" = 0 ] ; then
  143.            echo -e "WARNING - ${SOAPSTATUS} - ${IMAPSTATUS} - ${ADMINSTATUS} - ${SYNCSTATUS} |"
  144.            echo -e "${SOAPINFO}\n${IMAPINFO}\n${ADMININFO}\n${SYNCINFO}"
  145.            exit ${STATE_WARNING}
  146.         fi
  147.     elif [ "${WARN}" = 0 ] && [ "${CRIT}" = 0 ] ; then
  148.         echo -e "OKAY - ${SOAPSTATUS} - ${IMAPSTATUS} - ${ADMINSTATUS} - ${SYNCSTATUS} |"
  149.         echo -e "${SOAPINFO}\n${IMAPINFO}\n${ADMININFO}\n${SYNCINFO}"
  150.         exit ${STATE_OK}
  151.     fi
  152.  
  153.   }
  154.  
  155.  # Start the program:
  156.   fMain
  157.  
  158.  # Exit with previous return code:
  159.   exit "${?}"
Advertisement
Add Comment
Please, Sign In to add comment