flipje

nagios_check_phpmyadmin_version

Mar 9th, 2012
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.95 KB | None | 0 0
  1. #!/bin/bash
  2. ############################################################################################
  3. # +--------------------------------------------------------------------------------------+ #
  4. # |  Deze nagios check haalt met wget de release info op bij een ingevoerde url          | #
  5. # |  en checked of deze nog gelijk is aan de current version op de phpmyadmin website    | #
  6. # |                                                                                      | #
  7. # |  flip hess 2011 05 04 [email protected]                                            | #
  8. # +--------------------------------------------------------------------------------------+ #
  9. ############################################################################################
  10.  
  11. # Variables:
  12.  
  13.   PATH='/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin'
  14.  
  15.   SCRIPT_PATH="${0}"
  16.   URL="${1}"
  17.  
  18.   STATE_OK=0
  19.   STATE_WARNING=1
  20.   STATE_CRITICAL=2
  21.   STATE_UNKNOWN=3
  22.  
  23.   # current version url
  24.   VERSIONURL='http://phpmyadmin.net/home_page/version.php'
  25.  
  26.  
  27.  
  28. # Functions:
  29.  
  30. # The main function.
  31. function fMain()
  32. {
  33.   # Check whether any arguments are given:
  34.   if [ ${#} != 1 ]
  35.   then
  36.     fShowUsage
  37.     exit "${STATE_UNKNOWN}"
  38.   fi
  39.  
  40.   # check voor een resolvbare url door de http:// en alles na de 1e / te substitueren en de rest te resolven
  41.   FQDN=$(echo ${URL} | sed -e 's/http\:\/\///' -e 's/\/.*$//')
  42.  
  43.   # resolv de mogelijke fqdn
  44.   host -q ${FQDN} > /dev/null 2>&1
  45.  
  46.   # check exit code
  47.   if [ ${?} != 0 ]
  48.   then
  49.      echo "${URL} is not resolvable!"
  50.      exit "${STATE_UNKNOWN}"
  51.   fi
  52.  
  53.   # check if url is expected format of phpmyadmin:
  54.   lynx -dump -crawl -connect_timeout=2 -width=200 ${URL}  | grep -q 'phpMyAdmin is more friendly with a frames-capable browser'
  55.   if [ ${?} != 0 ]
  56.   then
  57.     echo "Unexpected content string, No phpmyadmin found on ${URL}!"
  58.     exit "${STATE_UNKNOWN}"
  59.   fi
  60.  
  61.   # check for current releasedate on phpmyadmin website
  62.   SINCE=$( lynx -dump -crawl -connect_timeout=2 -width=200 ${VERSIONURL} | sed 1d | grep -Ev '(^$|http://)' | tail -1 | tr -d "-")
  63.  
  64.   # check if SINCE consists of only dots and numbers:
  65.   if [ -n "$(echo "${SINCE}" | tr -d "[:digit:]")" ] || [ -z "${SINCE}" ]
  66.     then
  67.        echo "Something went wrong gathering since version date information from phpmyadmin website"
  68.        fShowUsage
  69.        exit "${STATE_UNKNOWN}"
  70.   fi
  71.  
  72.   # check for version number on phpmyadmin website:
  73.   VERSION=$( lynx -dump -crawl -connect_timeout=2 -width=200 ${VERSIONURL} | sed 1d | grep -Ev '(^$|http://)' | head -1 )
  74.  
  75.   # check if VERSION consists of only numbers:
  76.   if [ -n "$(echo "${VERSION}" | tr -d ".[:digit:]")" ] || [ -z "${VERSION}" ]
  77.     then
  78.        echo "Something went wrong gathering since version date information from phpmyadmin website"
  79.        fShowUsage
  80.        exit "${STATE_UNKNOWN}"
  81.   fi
  82.  
  83.   # check for version on our phpmyadmin installation
  84.   OURVERSION=$( lynx -dump -crawl -connect_timeout=2 -width=200 ${URL}/README |grep Version | sed -e 's/  Version //g')
  85.  
  86.   # check if OURVERSION consists of only dots and numbers:
  87.   if [ -n "$(echo "${OURVERSION}" | tr -d ".[:digit:]")" ] || [ -z "${SINCE}" ]
  88.     then
  89.        echo "Something went wrong gathering since version date information from the provided url"
  90.        fShowUsage
  91.        exit "${STATE_UNKNOWN}"
  92.   fi
  93.  
  94.   # make results
  95.   if [ "${OURVERSION}" = "${VERSION}" ]
  96.   then
  97.      echo "OK - version ${OURVERSION} is the current phpmyadmin version"
  98.      exit "${STATE_OK}"
  99.   else
  100.      echo "CRITICAL - There is a newer version of phpmyadmin present on http://phpmyadmin.net!"
  101.      echo "We use version ${OURVERSION} but there is a newer version since ${SINCE}, version ${VERSION}"
  102.      exit "${STATE_CRITICAL}"
  103.   fi
  104.  
  105.   return "${?}"
  106. }
  107.  
  108. # Shows usage.
  109. function fShowUsage()
  110. {
  111.   echo "Usage: ${SCRIPT_PATH} http://phpmyadminURL"
  112.   return 0
  113. }
  114.  
  115.  
  116. # Start the program:
  117. fMain "${@}"
  118.  
  119. # Exit with previous return code:
  120. exit "${?}"
Advertisement
Add Comment
Please, Sign In to add comment