Ubuntuで保留中のセキュリティ更新プログラムの数を確認する


25

セキュリティと通常のパッケージの両方について、Ubuntuサーバーで自動更新を有効にすることは禁止されていると言ってみましょう。

4台のUbuntuサーバーのいずれかにログインすると、ウェルカムメッセージに次の内容が含まれます。

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

ただし、APTを監視するNagiosプラグインを実行すると、次の結果が得られます。

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

保留中のセキュリティ更新と定期的な更新があることを適切に検出する方法を知る必要があります。それができたら、保留中の定期的な更新に対してWARNINGを返し、保留中のセキュリティ更新に対してCRITICALを返すNagiosスクリプトを作成する予定です。

誰もがこれらの2つの状態を検出する方法を知っていますか?

回答:


12

Nagiosプラグイン/usr/lib/nagios/plugins/check_aptは、Ubuntuの重要ではないapt更新の公開方法と組み合わせて重要な更新を検出する方法により、Ubuntuの重要な更新を正しく検出しません。詳細はこちらのバグにあります:https : //bugs.launchpad.net/bugs/1031680

/usr/lib/update-notifier/apt-check代わりに使用することは、信頼できる回避策です。


31

保留中の定期更新の数は、次を使用して見つけることができます。

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

また、保留中のセキュリティ更新の数は、次を使用して確認できます。

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

最終的に、私のNagiosプラグインは次のようになりました。

#!/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

単にapt-getコマンドを使用しないのはなぜですか?:

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

2
このハックでは、セキュリティ更新プログラムとセキュリティ以外の更新プログラムを確実に区別できません。たとえば、Ubuntuでは、セキュリティアップデートもアップデートポケットに公開されます。更新ポケットがに最初にリストされている場合、sources.list提案はセキュリティ更新通知の欠落につながります。aptは代わりにアップデートポケットからダウンロードすることを選択するため、grepはそれらを逃します。
ロビーバサック

@RobieBasakで識別される問題は、私の答えどおりに修正することができるserverfault.com/a/856769/134053
mc0e

0

Nagiosからセキュリティ更新プログラムが報告されたら、これが必要な更新プログラムのリストを取得する方法です。

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

これらのコマンドをwc -lにパイプして使用することもできますが、上記の答えはおそらくより効率的で、Nagiosスクリプトに適しています。


「-oDir」はタイプミスですか?!
トラビスファンデルフォント
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.