Vérifier le nombre de mises à jour de sécurité en attente dans Ubuntu


25

Permettez-moi de commencer en disant qu'il m'a été interdit d'activer les mises à jour automatiques sur nos serveurs Ubuntu, à la fois pour la sécurité et les packages réguliers.

Lorsque je me connecte à l'un de mes quatre serveurs Ubuntu, le message de bienvenue contient ceci:

39 packages can be updated.
26 updates are security updates.

Cependant, lorsque j'exécute le plugin Nagios qui surveille APT, j'obtiens:

% /usr/lib/nagios/plugins/check_apt
APT WARNING: 33 packages available for upgrade (0 critical updates). 

J'ai besoin de savoir comment détecter correctement les mises à jour de sécurité en attente et les mises à jour régulières. Une fois que je peux le faire, je prévois d'écrire un script Nagios qui renverra WARNING pour les mises à jour régulières en attente, et CRITICAL pour les mises à jour de sécurité en attente.

Quelqu'un sait comment détecter ces deux conditions?

Réponses:


12

Le plugin Nagios /usr/lib/nagios/plugins/check_aptne 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 aptcombiné avec la façon dont les mises à jour non critiques d'Ubuntu sont publiées. Plus de détails sont dans le bug ici: https://bugs.launchpad.net/bugs/1031680

L'utilisation à la /usr/lib/update-notifier/apt-checkplace est une solution de contournement fiable.


31

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

1

Pourquoi ne pas simplement utiliser la commande apt-get?:

apt-get -s dist-upgrade | grep "^Inst" | grep -i security | wc -l

2
Ce hack ne fera pas de distinction fiable entre les mises à jour de sécurité et non liées à la sécurité. Par exemple, sur Ubuntu, les mises à jour de sécurité sont également publiées dans la poche des mises à jour. Si la poche des mises à jour est répertoriée en premier sources.list, votre suggestion entraînera des notifications de mise à jour de sécurité manquantes. apt choisira plutôt de les télécharger à partir de la poche des mises à jour, et donc votre grep les manquera.
Robie Basak

Le problème identifié par @RobieBasak peut être corrigé selon ma réponse sur serverfault.com/a/856769/134053
mc0e

0

Une fois que Nagios a signalé que vous disposiez de mises à jour de sécurité, voici comment obtenir la liste des mises à jour nécessaires.

grep security /etc/apt/sources.list > /tmp/security.list
sudo apt-get upgrade -oDir::Etc::Sourcelist=/tmp/security.list -s

Vous pouvez également utiliser ces commandes canalisées dans wc -l pour vous donner un décompte, mais les réponses ci-dessus sont probablement plus efficaces et appropriées pour un script Nagios.


"-ODir" est-il une faute de frappe?!
Travis van der Font
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.