セキュリティと通常のパッケージの両方で、Ubuntuサーバーで自動更新を有効にするためにforbiddenされていることから始めましょう。
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 [〜#〜]を返すNagiosスクリプトを記述し、[〜#〜] critical [〜#〜]保留中のセキュリティ更新。
誰もがこれらの2つの状態を検出する方法を知っていますか?
Nagiosプラグイン/usr/lib/nagios/plugins/check_apt
は、Ubuntuの重要でない更新の公開方法とapt
を介した重要な更新の検出方法により、Ubuntuの重要な更新を正しく検出しません。詳細はこちらのバグにあります: https://bugs.launchpad.net/bugs/103168
代わりに/usr/lib/update-notifier/apt-check
を使用することは、信頼できる回避策です。
保留中の定期的な更新の数は、次のようにして確認できることがわかります。
/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
単にapt-getコマンドを使用しないのはなぜですか?:
apt-get -s dist-upgrade | grep "^Inst" | grep -i security | wc -l
Nagiosがセキュリティの更新を報告したら、これが必要な更新のリストを取得する方法です。
grep security /etc/apt/sources.list > /tmp/security.list
Sudo apt-get upgrade -oDir::Etc::Sourcelist=/tmp/security.list -s
Wc -lにパイプされたこれらのコマンドを使用してカウントすることもできますが、上記の回答はおそらくNagiosスクリプトの方が効率的で適切です。