उबंटू में लंबित सुरक्षा अपडेट की संख्या की जाँच करें


25

मुझे यह कहने से शुरू करें कि मुझे हमारे उबंटू सर्वर पर स्वत: अपडेट को सक्षम करने के लिए मना किया गया है, सुरक्षा और नियमित पैकेज दोनों के लिए।

जब मैं अपने चार उबंटू सर्वरों में से किसी एक में प्रवेश करता हूं, तो स्वागत संदेश में यह होता है:

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

मुझे यह जानने की जरूरत है कि कैसे पता लगाया जाए कि लंबित सुरक्षा अपडेट और नियमित अपडेट हैं। एक बार जब मैं ऐसा कर सकता हूं, तो मेरे पास एक नगिओस स्क्रिप्ट लिखने की योजना है जो लंबित नियमित अपडेट और लंबित सुरक्षा अपडेट के लिए चेतावनी लौटाएगी

किसी को पता है कि उन दो स्थितियों का पता कैसे लगाया जाए?

जवाबों:


12

Nagios प्लगइन /usr/lib/nagios/plugins/check_aptउबंटू में महत्वपूर्ण अपडेट का सही तरीके से पता नहीं लगाता है क्योंकि यह कैसे महत्वपूर्ण अपडेट का पता लगाता है aptकि कैसे उबंटू गैर-महत्वपूर्ण अपडेट प्रकाशित किए जाते हैं। अधिक विवरण यहाँ बग में हैं: 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 उन्हें याद करेगा।
रॉबी बसाक

@RobieBasak द्वारा पहचानी गई समस्या को serverfault.com/a/856769/134053
mc0e

0

एक बार जब नागियोस ने आपको सुरक्षा अपडेट की सूचना दी है, तो यह है कि आपको किस प्रकार की सूची चाहिए।

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

आप एक गिनती देने के लिए wc -l में पाई गई इन कमांड का उपयोग भी कर सकते हैं, लेकिन ऊपर दिए गए उत्तर शायद नागोइ स्क्रिप्ट के लिए अधिक कुशल और उपयुक्त हैं।


"-ODir" एक टाइपो है?!
ट्रैविस वैन डेर फॉन्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.