Як знайти в командному рядку кількість пакетів, які потребують оновлення?


34

Я працюю над деякою автоматизацією системного адміністратора за допомогою тканини, і я хотів би мати можливість контролювати кількість пакетів, які потребують оновлення на певній машині. Це та сама інформація, яку я бачу під час першого входу в машину, тобто ця частина:

35 packages can be updated.
22 updates are security updates.

Чи є команда, яку я можу виконати (бажано, без sudo), яка дає саме таку інформацію?

Я подивився на прив’язки до пітону, але вони, схоже, мають високу криву навчання, і вони також, здається, багато в чому змінені - мені б хотілося чогось, що буде працювати принаймні так, як ясні, не потребуючи робити різні речі в різних версіях Ubuntu.

Відповіді:


33

Щоб отримати цей вихід, ви можете скористатися командою

sudo /usr/lib/update-notifier/update-motd-updates-available

або, якщо ви не хочете користуватися sudo,

cat /var/lib/update-notifier/updates-available

Пояснення

У loginшоу додатки програми висновок у файлі /etc/motd, який є символічним посиланням /var/run/motd.

Цей останній файл оновлюється mounted-varrunслужбою (див. /etc/init/mounted-varrun.conf) Із посиланням на всі сценарії /etc/update-motd.d/, зокрема

/etc/update-motd.d/90-updates-available

що в свою чергу викликає сценарій

/usr/lib/update-notifier/update-motd-updates-available

цей сценарій виконує різні дії і, нарешті, записує вихід у текстовий файл

/var/lib/update-notifier/updates-available

EDIT

Що стосується перезавантаження частини питання, запустіть цю команду

/usr/lib/update-notifier/update-motd-reboot-required

він не дасть вихід, якщо перезавантаження не потрібно.


Я просто перевіряю на машині, що працює 11.04, і byobu показує, що потрібно 44 оновлення. catЯкщо запропонований вами файл порожній, а скрипт, на який ви вперше вказуєте, не існує на цій машині - це в якомусь пакеті, який потрібно встановити? Я маю /usr/lib/update-manager, але жодного update-notifierкаталогу.
KayEss

Тестовано на робочому столі 11.04. Ці файли належать до того, update-notifier-commonщо було встановлено автоматично на новій установці (не оновлення з 10.10).
enzotib

Я переглянув ще кілька машин. Для тих, хто має /var/lib/update-notifier/apt-checkтакий вигляд, він повертає два числа, тобто 43; 24 (43 оновлення, 24 - це безпека), але навіть це не на всіх моїх машинах. Я припускаю, що цей файл, можливо, переміщувався між пакетами в різних версіях.
KayEss

21

Чому ви не можете просто запустити це?

/usr/lib/update-notifier/apt-check --human-readable

Ось що / usr / lib / update-notifier / update-motd-updates-available робить для збору інформації, принаймні у версії Ubuntu, яку я використовую (12.10).


Щойно перевірено на Lucid, і він там теж працює
KayEss

2
Він пише свій вихід на stderr. Хто це зробив би?
KayEss

2
Віддайте перевагу такому підходу, оскільки він повністю сторонить весь update-motdпакет та його мислення. Дякуємо за те, що ви просто надали команду
jefflunt

3

Я також шукаю метод scriptpred для перевірки оновлення всередині мінімальних контейнерів docker, коли я знайшов коментар у /usr/lib/update-notifier/apt-check:

apt-get -s -o Debug::NoLocking=true upgrade | grep ^Inst

Це дозволяє перевірити сценарій оновлення, не потребуючи встановлення update-notifier-commonпакета


0

Ви можете використовувати check_aptплагін від monitoring-plugins-basic( Nagios ) з перевагою отримання різних повернених кодів залежно від наявності оновлень:

$ /usr/lib/nagios/plugins/check_apt
APT WARNING: 18 packages available for upgrade (0 critical updates). |available_upgrades=18;;;0 critical_updates=0;;;0
$ echo $?
1

Зворотні коди мають таке значення:

  • 0 -> відсутні пакети для оновлення
  • 1 -> не критичні пакети, доступні для оновлення
  • 2 -> доступні критичні оновлення

Список літератури:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.