Як отримати список оновлень безпеки в командному рядку в Debian / Ubuntu


26

У інструменті GUI ви можете отримати список пакетів із оновленнями безпеки. Чи можна це зробити в командному рядку в Debian або Ubuntu?

Зазвичай я можу використовувати "апт-отримати оновлення", який би показав мені, що оновлюється, але я хотів би знати, які з них є оновленнями безпеки.


тільки для Ubuntu 14.04, 16.04 та 18.04 LTS: askubuntu.com/a/1128270/92504
Ангел

Відповіді:


5

Використовуйте додаток без оновлення без нагляду.

sudo unattended-upgrade

Це дозволяє встановлювати лише оновлення безпеки автоматично, але ви можете зателефонувати вручну за потреби.


Мені подобається ця відповідь, оскільки ви насправді думали про те, що я можу намагатися зробити, і оновлення без догляду - це те, що я встановив сьогодні, щоб спробувати.
Стівен Полгер

13
Однак насправді це питання не відповідає.
reinierpost

4
Якщо це відповідь, то питання було неправильним. Принаймні, воно розвивалося і має бути відповідно відредаговане та / або позначене як дублікат askubuntu.com/questions/194/…
mc0e

39
apt-get upgrade -s | grep -i security

... це те, що плагін Nagios check-apt використовує для підрахунку очікуючих оновлень безпеки, схожих на те, що ви шукаєте.


Але він не може знайти оновлення безпеки bash для оболонки?
linjunhalida

3
Це дає помилкові позитиви на пакунках із "безпекою" у назві, наприклад "xml-security-c-utils", "debian-security-support", "modsecurity-crs", "node-security" тощо
Shnatsel

2
@Shnatsel для перевірки командного рядка, це дуже просто ... ви легко можете зрозуміти, чи це помилковий позитив чи ні. Крім того, якщо ви знаєте поточну назву вашої ОС, ви можете написати, grep -i xenial-securityі це має зменшити помилковий позитив до майже нуля.
Alexis Wilke

1
@Shnatsel так grep Debian-Securityбуло б кращим рішенням?
Пабло А

Це корисно для отримання кількості regular;securityдоступних оновлень. -pВаріант списку назв пакунків , доступних для оновлення не робить різниці між регулярними і оновлень безпеки , однак (принаймні , на 16.04) ... так що це не є життєздатним способом , щоб отримати список оновлень безпеки доступні, наскільки я можу судити.
маттпр

10

У ubuntu ви повинні мати змогу використовувати apt-check, саме ця група заповнює ваш mtd кількістю доступних оновлень безпеки.


2
Я не бачу цього на debian або ubuntu.
Стівен Полгер

5
apt-check є в / usr / lib / update-notifier /. Спробуйте / usr / lib / update-notifier / apt-check - легко читати для прямого повідомлення.
u2702

2
Я не переконаний, що показує щось корисне. Щоб отримати список, потрібно додати --package-names( -p), але тоді він, схоже, не відрізняється між регулярними оновленнями та оновленнями безпеки.
Auspex

5

Ви можете отримати список за допомогою цієї команди:

sudo unattended-upgrade --dry-run -d 2> /dev/null | grep 'Checking' | awk '{ print $2 }'

2
Ви надіслали ВСІ вихідні дані, щоб /dev/nullви нічого не схопили!
Auspex

Здається, це не працює з надійними. він показує всі пакети, які потребують оновлення замість цього.
Дрімана крапка з комою

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

Сьогодні я вирішив цю потребу, змінивши трохи перевірку. Перевірте цю суть: gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b
Paolo Perego

3

У мене є модифікована версія, update-notifierяка потребує додаткового перемикача: --security-package-namesякий видає лише імена пакета, пов'язані з безпекою. Я маю це як суть (поки я не створять запит на об'єднання у відповідному проекті на панелі запуску). До цього часу це можна виконати наступним чином:

Біжи

curl -s https://gist.githubusercontent.com/ahmadnazir/c2444d6b09fd7bb4963a13bc577d92a3/raw/0231b94a4e46abe0a5959de5f84feda76ad2eb9d/apt-check.py \
  | python /dev/stdin --security-package-names \
  | column -t -s , \
  | sort

Вихідні дані

Це дає вихід формату: назва пакета , встановлена ​​версія та версія кандидата :

...
thunderbird                          1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-gnome-support            1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-locale-en                1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-locale-en-us             1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
...

3

Виходячи з відповіді Фабріціо Регіні вище.

За 12.04 / Точно:

sudo unattended-upgrade --dry-run -d 2>&1 /dev/null | grep 'Checking' | grep security | awk '{ print $2 }'

За 14.04 / Довіряє:

sudo unattended-upgrade --dry-run -d | grep 'Checking' | grep security | awk '{ print $2 }'

1

І варіант, розібравшись разом, прочитавши інші відповіді - я вважаю, що це може задовольнити помилкове позитивне питання і бути досить легким.

sudo unattended-upgrade --dry-run -d 2>/dev/null  | awk '/Checking/ && /archive:..*-security. / {print $2}'

0

Я вважаю, що відповідаючи на питання, яке задає ОП, - це бачити Перелік пакунків, а не як встановлювати лише пакети безпеки. Спираючись на відповідь @topdog Ви повинні використовувати: /usr/lib/update-notifier/apt-check -p Де -pпрапор стоїть на пакунках


1
тут перераховані всі пакети та не лише оновлення безпеки
confiq

apt-check здається недоступним у Debian Jessie. Він залишається на оновлених системах Wheezy, але нові інсталяції вже не мають поширеного повідомлення-оновлення. Чи знаєте ви альтернативу?
січня

@jan це все ще там, як частина update-notifier-common
Auspex

@Auspex Цей пакет більше не існує в Джессі. Є лише update-notifierякий застарілий перехідний пакет gnome-packagekit. Дивіться тут .
січень

1
@jan Вибачте, я взяв за це слово debian. Я шукав файл, package.debian.org/…, і він мені сказав You have searched for files named apt-check in suite jessie, all sections, and all architectures. Found 1 results., але тоді, коли ви фактично натискаєте на посилання для цього результату, він вам кажеPackage not available in this suite.
Auspex

0

Ці дві команди виплюнуть список. Труба до wc -l, щоб побачити, скільки позаду. ;-)

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

Все ще діє для старих дистрибутивів або якщо у вас є оновлення, але безпека увімкнена:

sudo apt-get upgrade -s| grep ^Inst |grep Security 

Будь обережний. Якщо ви генеруєте /tmp/security.list таким чином під час запуску як root, то ви вразливі до атаки на основі символьних посилань.
mc0e

Я не можу отримати такий підхід (перший блок коду) на Ubuntu 14.04. -oDir::Etc::SourcelistЗдається, ця опція не дозволяє вимкнути стандартний набір сховищ.
mc0e

0

Я думаю, що відповідь @smin - це в основному хороший підхід, але трохи розпущений з регулярним виразом, як зазначає @Shnatsel.

Як щодо цього:

apt-get upgrade -q --dry-run \
| perl -ne 'm/^Inst (\S+) \S+ \(([^\)]+) Debian-Security:8/ && print "$1-$2\n"'

У цьому списку перелічені назви пакетів, а також версії, які ви хочете встановити. Ви можете -$2витягнути з заяви про друк, якщо не хочете там версій.

[Це, мабуть, можна зробити трохи легшим, використовуючи awk замість perl]


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