ArchLinux's Pacman lässt sich mit dem folgenden Skript einfach mithilfe von Nagios auf verfügbare Updates überprüfen.
======Skript======
Das folgende Skript muss unter **/usr/local/nagios/libexec/check_pacman** abgelegt werden:
#!/bin/sh
#################################
# check ArchLinux pacman #
# ---------------------- #
# 2012 By Christian Stankowic #
# http://christian-stankowic.de #
# info@christian-stankowic.de #
#################################
#set warning level per param if detected
if [ -n "$1" ]; then
warning="$1"
else
warning=5
fi
#update ports and calculate updates
/usr/bin/pacman -Sy > /dev/null
updates=$(/usr/bin/pacman -Qu | wc -l)
#Return code depending on ready updates
if [ "$updates" = 0 ]; then
echo "OK - $updates updates ready"
exit 0
elif [ "$updates" -le $warning ]; then
echo "WARNING - $updates updates ready"
exit 1
else
echo "CRITICAL - $updates updates ready"
exit 2
fi
Danach wird das Skript ausführbar gemacht:
# chmod +x /usr/local/nagios/libexec/check_pacman
=====Parameter=====
Ohne Parameter überprüft das Skript ob Updates vorhanden sind und gibt bei **5 Updates** oder weniger eine Warnung aus - existieren mehr Updates erhält Nagios den Status **CRITICAL**
Dieser Schwellenwert kann dem Skript angepasst übergeben werden:
# ./check_pacman 20
In diesem Beispiel verursachen bis zu 20 Updates noch eine Warnung - 21 Updates oder mehr übergeben einen kritischen Wert an Nagios.
======Einbindung in NRPE======
Damit das Skript auch innerhalb NRPE zur Verfügung steht, muss in der NRPE-Konfigurationsdatei (**/usr/local/nagios/etc/nrpe.cfg**) folgende Zeile hinzugefügt werden:
command[check_pacman]=/usr/local/nagios/libexec/check_pacman
In dieser Zeile kann natürlich noch ein alternative Schwellenwert angegeben werden.
Nach einem Neustart des NRPE-Daemons steht das Kommando zur Verfügung.
======Einbindung im Nagios======
Nagios-seitig wird das Skript wie jeder gewöhnlicher Check in Form eines Kommandos implementiert und einem Host zugewiesen:
define command{
command_name check_nrpe_pacman
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_pacman
}
#Updates
define service{
use local-service
host_name tvm-crux271
service_description Updates
check_command check_nrpe_pacman
}