Il s'avère que le nombre de mises à jour régulières en attente peut être trouvé en utilisant :
/usr/lib/update-notifier/apt-check 2>&1 | cut -d ';' -f 1
Et le nombre de mises à jour de sécurité en attente peut être trouvé en utilisant :
/usr/lib/update-notifier/apt-check 2>&1 | cut -d ';' -f 2
Au final, mon plugin Nagios était le suivant :
#!/bin/sh
#
# Standard Nagios plugin return codes.
STATUS_OK=0
STATUS_WARNING=1
STATUS_CRITICAL=2
STATUS_UNKNOWN=3
# Query pending updates.
updates=$(/usr/lib/update-notifier/apt-check 2>&1)
if [ $? -ne 0 ]; then
echo "Querying pending updates failed."
exit $STATUS_UNKNOWN
fi
# Check for the case where there are no updates.
if [ "$updates" = "0;0" ]; then
echo "All packages are up-to-date."
exit $STATUS_OK
fi
# Check for pending security updates.
pending=$(echo "${updates}" | cut -d ";" -f 2)
if [ "$pending" != "0" ]; then
echo "${pending} security update(s) pending."
exit $STATUS_CRITICAL
fi
# Check for pending non-security updates.
pending=$(echo "${updates}" | cut -d ";" -f 1)
if [ "$pending" != "0" ]; then
echo "${pending} non-security update(s) pending."
exit $STATUS_WARNING
fi
# If we've gotten here, we did something wrong since our "0;0" check should have
# matched at the very least.
echo "Script failed, manual intervention required."
exit $STATUS_UNKNOWN
Le plugin Nagios /usr/lib/nagios/plugins/check_apt
ne détecte pas correctement les mises à jour critiques dans Ubuntu en raison de la façon dont il détecte les mises à jour critiques via apt
combiné avec la façon dont les mises à jour non critiques d'Ubuntu sont publiées. Plus de détails sont dans le bogue ici :https://bugs.launchpad.net/bugs/1031680
Utilisation de /usr/lib/update-notifier/apt-check
est plutôt une solution de contournement fiable.