Überwachen der Joomla Version via Nagios
- Details
- Geschrieben von Bastian Schmoll
- Veröffentlicht: 06. Dezember 2013
- Zugriffe: 19858
Hier könnt Ihr das neue Script finden.
Nachdem ich lange im Internet recherchiert habe und kein passendes Nagios scrript finden konnte, hab ich entschieden selbst ein Nagios Script zu schreiben, welches die Versionen von Joomla prüft. Bei dem Nagios Script handelt es sich um ein Script welches die Joomla Versionen 1.5.x, 2.5.x und 3.x prüft.
Da ich mehrere Versionen installiert habe, sollte das Nagios Script einfach auf die verschiedenen Ordner angepasst werden können.
Übersicht:
Mit diesem Nagios Script ist es möglich verschiedene Installationen und Joomla Versionen zu prüfen, ob diese auf dem aktuellen Stand sind. Sollte z.B. die Version 2.5.14 installiert sein meldet das Script, dass es die Joomla Version 2.1.16 gibt. Das Script basiert auf bash und wurde unter Ubuntu 12.04 entworfen. Das Script kann einfach in dem Plugin-Ordner von Nagios abgelegt werden. Dieser befindet sich bei einer Nagios 3 Installation unter /usr/lib/nagios/plugins/. Das Script wird später in der commands.cfg von Nagios eingebunden. Die aktuellen Versionen werden aus der Datei http://update.joomla.org/core/list.xml ausgelesen.
Ihr könnt das Script auch auf der Shell einfach testen: ./check_joomla_version.sh <Ordner>
Als Ordner wird das Installationsverzeichnis von Joomla angegeben. z.B. /var/www/joomla. Solltet ihr unter dem Ordner /var/www/ mehrere Installationen haben, könnt Ihr diesen auch einfach in das Script übernehmen: JOOMLANEWFILE=/var/www/$APP/libraries/cms/version/version.php Dann braucht ihr nur noch ./check_joomla_version.sh joomla angeben. Der Pfad für JOOMLAOLDFILE muss dann natürlich auch angepasst werden.
Das Script
check_joomla_version.sh:
#!/bin/bash
###
# Simple bash script to check if Joomla up to date.
# version: 1.0
# author: Bastian Schmoll
# mail: Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
# changelog: initial version
####
# Config section APP=$1 JOOMLANEWFILE=$APP/libraries/cms/version/version.php JOOMLAOLDFILE=$APP/libraries/joomla/version.php # function section function return { # compare and return info if [ "$iflocalversion" -lt "$ifremoteversion" ]; then echo "A new version is available: $remoteversion. Our Version $localversion is out of date." exit 2 else echo "Your current Version $localversion is up to date" fi } function getlocalversion { # get local Joomla Version localversion=`cat $JOOMLANEWFILE | grep public | head -n3 | sed -e '1d' | sed 's/\(.*\)..$/\1/' | awk '{print $4}' | sed 's/^.// ' | sed 'N;s/\n/./'` iflocalversion=`echo $localversion | sed 's/\.//g'` } if [ -f $JOOMLANEWFILE ]; then whichversion=`cat $JOOMLANEWFILE | grep public | head -n2 | sed -e '1d' | awk '{print $4}' | sed 's/\(.*\)....$/\1/' | sed 's/^.// '` #if Version 2.5 x or 3.x if [ "$whichversion" == 2 ]; then # get local Joomla Version getlocalversion # get Remot Joomla Version RESULT="`wget -qO- http://update.joomla.org/core/list.xml`" remoteversion=`echo $RESULT | awk '{print $10}' | sed 's/\(.*\).$/\1/' | sed 's/^.........//'` ifremoteversion=`echo $remoteversion | sed 's/\.//g'` # compare and return info return elif [ "$whichversion" == 3 ]; then # get local Joomla Version getlocalversion # get Remot Joomla Version RESULT="`wget -qO- http://update.joomla.org/core/list.xml`" remoteversion=`echo $RESULT | awk '{print $42}' | sed 's/\(.*\).$/\1/' | sed 's/^.........//'` ifremoteversion=`echo $remoteversion | sed 's/\.//g'` # compare and return info return else echo "Sorry there is no Joomla installation" fi elif [ -f $JOOMLAOLDFILE ]; then # get local Joomla Version localversion=`cat $JOOMLAOLDFILE | grep var | grep -E 'RELEASE|DEV_LEVEL' | awk '{print $4}' | sed 's/\(.*\)..$/\1/' | sed 's/^.//' | sed 'N;s/\n/./'` iflocalversion=`echo $localversion | sed 's/\.//g'` # get Remot Joomla Version remoteversion="1.5.26" ifremoteversion=`echo $remoteversion | sed 's/\.//g'` # compare and return info return else echo "Sorry there is no Joomla installation" fi
commands.cfg
Das Einbinden in die commands.cfg ist simpel. Ich habe das Script ganz unten in die Datei eingefügt:
# 'check_joomla' command definition define command{ command_name check_joomla_version command_line /bin/bash $USER1$/check_joomla_version.sh $ARG1$ }
Service einbinden
Zum Schluss muss nur noch der check in der services.cfg Datei eingebunden werden.
define service{ use local-service host_name localhost service_description Joomla Version check_command check_joomla_version!<Ordner> }