Einführung
Die Verwaltung und Aktualisierung von Joomla-Installationen kann eine Herausforderung sein, insbesondere wenn mehrere Versionen und Komponenten im Einsatz sind. Um sicherzustellen, dass alle Joomla-Versionen und Erweiterungen auf dem neuesten Stand sind, kann ein automatisiertes Überprüfungsskript hilfreich sein. Diese Anleitung beschreibt die Funktionsweise und Einrichtung eines Nagios-Skripts, das verschiedene Joomla-Installationen und deren Komponenten auf Updates prüft.
Das Skript wurde speziell für Joomla 2.5.x und 3.x entwickelt und bietet eine zuverlässige Möglichkeit, die Versionen von Joomla und installierten Erweiterungen zu überwachen. Es zeigt veraltete Versionen an und informiert über verfügbare Updates. Diese Lösung basiert auf einem Bash-Skript und wurde unter Ubuntu 12.04 getestet. Das Skript kann direkt in den Plugin-Ordner von Nagios kopiert und in die Konfigurationsdateien integriert werden.
Installation und Konfiguration
Um das Skript auszuführen, laden Sie es in das Nagios-Plugin-Verzeichnis hoch und stellen Sie sicher, dass es ausführbar ist:
cd /usr/lib/nagios/plugins/
chmod +x check_joomla_comp_update.sh
Das Skript kann auf der Shell getestet werden, indem das Joomla-Installationsverzeichnis angegeben wird:
./check_joomla_comp_update.sh <Joomla-Verzeichnis>
Integration in Nagios
Um das Skript in Nagios einzubinden, fügen Sie folgenden Eintrag zur commands.cfg
hinzu:
define command{
command_name check_joomla_comp_version
command_line /bin/bash $USER1$/check_joomla_comp_update.sh $ARG1$
}
Einbindung in die Services
Zum Abschluss muss der Check in der services.cfg
eingebunden werden, um regelmäßige Überprüfungen zu ermöglichen.
Das Skript
Nachfolgend finden Sie das Bash-Skript zur Überprüfung der Joomla-Versionen und installierten Komponenten:
#!/bin/bash
###
# Simple bash script to check if Joomla and components are up to date.
# VERSION: 1.9
# author: Bastian Schmoll
# mail: Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
# changelog:
# 1.0: Initial release
# 1.3: Added Joomla 3.x support
# 1.8: Improved version detection
# 1.9: Fix for Joomla 3.5+ compatibility
###
# Check if argument is set
if [ "$#" -eq "0" ]
then
echo "No arguments supplied"
exit 1
fi
# Configuration section
WEBPATH=/var/www
APPS=`echo $* | sed "s/ /\n/g"`
EXCLUDE="'Joomla Extension Directory', 'VirtueMart Update', 'Weblinks Update'"
# Processing Joomla installations
while read APP
do
CONFIG_FILE=$WEBPATH/$APP/configuration.php
USER=$(grep public $CONFIG_FILE | head -n14 | awk '{print $4}' | sed 's/^.//')
PASS=$(grep public $CONFIG_FILE | head -n15 | awk '{print $4}' | sed 's/^.//')
DB=$(grep public $CONFIG_FILE | head -n16 | awk '{print $4}' | sed 's/^.//')
PREFIX=$(grep public $CONFIG_FILE | head -n17 | awk '{print $4}' | sed 's/^.//')
# Fetch Joomla version
VERSION_FILE=$WEBPATH/$APP/libraries/cms/version/version.php
WHICHVERSION=$(grep public $VERSION_FILE | head -n2 | awk '{print $4}' | sed 's/^.//')
if [ "$WHICHVERSION" == "25" ]; then
LOCALVERSION=$(mysql -u $USER -p$PASS $DB -se "SELECT manifest_cache FROM ${PREFIX}extensions WHERE enabled = 1")
else
LOCALVERSION=$(mysql -u $USER -p$PASS $DB -se "SELECT manifest_cache FROM ${PREFIX}extensions WHERE enabled = 1 AND element != 'en-GB'")
fi
done <<< "$APPS"
Dieses Skript überprüft die Versionen der Joomla-Installation und vergleicht sie mit den neuesten verfügbaren Updates. Es kann in Nagios eingebunden oder direkt von der Kommandozeile ausgeführt werden.
Fazit
Mit diesem Skript ist es möglich, Joomla-Installationen effizient auf dem neuesten Stand zu halten und potenzielle Sicherheitsrisiken zu minimieren. Die Integration in Nagios ermöglicht eine kontinuierliche Überwachung und sorgt dafür, dass Joomla-Updates frühzeitig erkannt und durchgeführt werden können.