Si scopre che il numero di aggiornamenti regolari in attesa può essere trovato usando:
/usr/lib/update-notifier/apt-check 2>&1 | cut -d ';' -f 1
E il numero di aggiornamenti di sicurezza in attesa può essere trovato usando:
/usr/lib/update-notifier/apt-check 2>&1 | cut -d ';' -f 2
Alla fine, il mio plugin Nagios era il seguente:
#!/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
Il plugin Nagios /usr/lib/nagios/plugins/check_apt
non rileva correttamente gli aggiornamenti critici in Ubuntu a causa del modo in cui rileva gli aggiornamenti critici tramite apt
combinato con il modo in cui vengono pubblicati gli aggiornamenti non critici di Ubuntu. Maggiori dettagli sono nel bug qui:https://bugs.launchpad.net/bugs/1031680
Usando /usr/lib/update-notifier/apt-check
invece è una soluzione alternativa affidabile.