Icinga2 Skript für WordPress Updates

Mit nur wenigen Klicks lässt sich einfach und schnell die eigene Webseite mit WordPress erstellen. Kein Wunder also, dass fast 40% aller Blog-Webseiten WordPress verwenden. Mit Hilfe von Plugins und tollen Designs kann man auch so einiges machen. Nun kommt es gerade bei WordPress hin und wieder vor, dass es öfters Updates gibt, sei es aus Sicherheitsgründen oder weil man neue Features hinzufügt oder Fehler behebt. Mit der Menge an Plugins nimmt auch die Anzahl an Updates zu und so verliert man auch mal schnell die Übersichtlichkeit. Unser Vorschlag: Icinga2!

Für diesen Fall haben wir mit unserem all time Favorit Icinga2 Monitoring ein Skript entwickelt. Mit diesem Skript erkennt man durch eine Abfrage sofort, wenn es wieder Zeit wird, sein WordPress zu aktualisieren. Und weil wir enge Freunde von Open Source sind, stellen wir Ihnen dieses Skript hier zur freien Verfügung. Happy scripting!

#!/bin/bash
#
# Script for wget output
# and generating Icinga2 output and error code
#
#       Ver 0.1
#
PROGNAME=`basename $0`
print_usage() {
        echo ""
        echo "Script for checking wget output"
        echo "and generating Icinga2 output and error code"
        echo ""
        echo "Usage: $PROGNAME [-u URL]"
        echo ""
        exit 3
}
while [ "$1" ] ; do
        case "$1" in
                -u)             wget_url="$2"
                                ;;
                -h|--help) print_usage;;
        esac
        shift
done

### Standard values DO NOT CHANGE ###
#Exit levels OK, WARNING, CRITICAL, UNKNOWN
ST_OK=0;ST_WR=1;ST_CR=2;ST_UK=3;exit_level=$ST_UK
output="";perf_data=""
#warn and crit are intern variables for boolean expressions, only values 0 and 1, DO NOT CHANGE!
warn=0;crit=0
### ### ###

timestamp=$(date +%s)
random_number=$RANDOM
# Error file log
ERR_LOG="/tmp/$PROGNAME.error.log"
# Output file log (temp file for output)
OUT_LOG="/tmp/$PROGNAME$timestamp$random_number.out"


### PROGRAM START ###

#get wget output
wget --no-check-certificate -O $OUT_LOG "$wget_url" >/dev/null 2>>$ERR_LOG
if [ ! -f $OUT_LOG ]; then
        echo "$OUT_LOG not found!"| tee -a $ERR_LOG
        exit $ST_UK
fi

#check for status OK WARNING CRITICAL
status=$(cat $OUT_LOG | cut -f1 -d":")
case "$status" in
                OK)             exit_level=$ST_OK;;
                WARNING)        exit_level=$ST_WR;;
                CRITICAL)       exit_level=$ST_CR;;
                *)              exit_level=$ST_UK;;
esac

output=$(cat $OUT_LOG)

#delete temporary files
rm -f "$OUT_LOG" > /dev/null 2>&1

#output and exit
echo -e "$output"
exit $exit_level
#EOF

Damit das Monitoring nun funktioniert, benötigt man noch ein weiteres Skript auf dem Webserver selber im WordPress Verzeichnis im Document Root. Man sollte noch darin die öffentliche IP des Icinga Servers eingeben, damit dieser Zugriff darauf hat.

$Allowed = array ('IP');

Der im Host eingetragene Check könnte wie folgt aussehen.

// *** check wordpress updates *** //
                vars.check_url["http://www.server.de/check_wordpress_updates.php"] = { http_vhost = "www.server.de"
  http_url   = "/check_wordpress_updates_.php"
  http_port  = "80"
 }
vars.wget_wordpress["www.server.de"] = address

Im Icingaweb2 könnte das auch folgendermaßen aussehen.

Sie haben Fragen zu diesem Skript oder benötigen Hilfe bei der Implementierung in Ihrer Umgebung? Sehr gerne helfen wir Ihnen weiter. Sprechen Sie uns an! Hier finden Sie mehr Informationen zu Icinga 2. Gerne können Sie auch weitere Artikel zu Icinga2 lesen.