우분투에서 보류중인 보안 업데이트 수 확인


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). 

보류중인 보안 업데이트와 정기적 인 업데이트가 있는지 올바르게 감지하는 방법을 알아야합니다. 일단 그렇게 할 수 있다면, 정기적 인 업데이트를 위해 경고 를, 보류중인 보안 업데이트를 위해 CRITICAL 을 반환하는 Nagios 스크립트를 작성할 계획 입니다.

누구나이 두 가지 조건을 감지하는 방법을 알고 있습니까?

답변:


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
이 핵은 보안 업데이트와 비보안 업데이트를 확실하게 구분하지 않습니다. 예를 들어 우분투에서는 보안 업데이트도 업데이트 포켓에 게시됩니다. 업데이트 포켓이에 첫 번째로 표시 sources.list되면 보안 업데이트 알림이 누락 된 것입니다. apt는 대신 업데이트 포켓에서 다운로드하도록 선택하므로 grep이 누락됩니다.
Robie Basak

@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.