Überprüfen Sie die Anzahl ausstehender Sicherheitsupdates in Ubuntu

20506
Mak Kolybabi

Lassen Sie mich zunächst sagen, dass mir verboten wurde, automatische Updates auf unseren Ubuntu-Servern zu aktivieren, und zwar sowohl für Sicherheits- als auch für reguläre Pakete.

Wenn ich mich bei einem meiner vier Ubuntu-Server anmelde, enthält die Begrüßungsnachricht Folgendes:

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

Wenn ich jedoch das Nagios-Plugin ausführe, das APT überwacht, erhalte ich Folgendes:

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

Ich muss wissen, wie ich erkennen kann, dass Sicherheitsupdates und regelmäßige Updates vorliegen. Sobald ich das kann, plane ich, ein Nagios-Skript zu schreiben, das WARNING für ausstehende regelmäßige Updates und CRITICAL für ausstehende Sicherheitsupdates zurückgibt.

Weiß jemand, wie man diese beiden Bedingungen erkennt?

25

4 Antworten auf die Frage

31
Mak Kolybabi

Es stellt sich heraus, dass die Anzahl der ausstehenden regelmäßigen Updates mithilfe von

/usr/lib/update-notifier/apt-check 2>&1 | cut -d ';' -f 1 

Die Anzahl ausstehender Sicherheitsupdates kann über Folgendes ermittelt werden:

/usr/lib/update-notifier/apt-check 2>&1 | cut -d ';' -f 2 

Am Ende war mein Nagios-Plugin wie folgt:

#!/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 "$" | cut -d ";" -f 2) if [ "$pending" != "0" ]; then echo "$ security update(s) pending." exit $STATUS_CRITICAL fi  # Check for pending non-security updates. pending=$(echo "$" | cut -d ";" -f 1) if [ "$pending" != "0" ]; then echo "$ 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 
12
Robie Basak

Das Nagios-Plugin /usr/lib/nagios/plugins/check_apterkennt kritische Updates in Ubuntu nicht richtig, da es kritische Updates über aptdie Veröffentlichung von nicht wichtigen Ubuntu-Updates erkennt . Weitere Details finden Sie im Bug hier: https://bugs.launchpad.net/bugs/1031680

Die Verwendung /usr/lib/update-notifier/apt-checkstattdessen ist ein zuverlässiger Workaround.

0
Matías

Warum nicht einfach den Befehl apt-get verwenden ?:

apt-get -s dist-upgrade | grep "^Inst" | grep -i security | wc -l 
Dieser Hack unterscheidet nicht sicher zwischen Sicherheitsupdates und anderen Updates. Auf Ubuntu werden beispielsweise auch Sicherheitsupdates in der Update-Tasche veröffentlicht. Wenn das Update-Fach zuerst in "sources.list" aufgeführt wird, führt Ihr Vorschlag zu fehlenden Sicherheitsupdate-Benachrichtigungen. apt lädt sie stattdessen aus dem Update-Fach herunter, und Ihr Grep wird sie vermissen. Robie Basak vor 8 Jahren 2
Das von @RobieBasak festgestellte Problem kann gemäß meiner Antwort unter https://serverfault.com/a/856769/134053 behoben werden mc0e vor 7 Jahren 0
0
flickerfly

Sobald Nagios gemeldet hat, dass Sie Sicherheitsupdates haben, erhalten Sie auf diese Weise eine Liste der benötigten Updates.

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

Sie können diese Befehle auch in wc -l verwenden, um eine Zählung zu erhalten, aber die obigen Antworten sind wahrscheinlich effizienter und für ein Nagios-Skript geeignet.

Ist "-oDir" ein Tippfehler?! tfont vor 7 Jahren 0