Знайдіть востаннє оновлене оновлення


13

Я будую сценарій, щоб дізнатися, коли список серверів востаннє оновлений yum update.

Я можу знайти це, history |grep "yum update"|head -n 1однак, проблема полягає в тому, що користувач міг би його розмістити, але не вводив у запиті "y".

Ще один спосіб я спробував yum history

ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
   109 | <xyz user>              | 2015-08-20 07:18 | Erase          |   1 E<
   108 | root <root>              | 2015-08-18 08:56 | Update         |    3 >
   107 | root <root>              | 2015-08-14 07:39 | Update         |    1
   106 | root <root>              | 2015-08-14 07:38 | Update         |    1
   105 | root <root>              | 2015-08-14 07:38 | Update         |    3
   104 | root <root>              | 2015-08-13 07:31 | Update         |    1
   103 | root <root>              | 2015-08-11 05:46 | Update         |    1
   102 | root <root>              | 2015-08-11 05:46 | Update         |    2
   101 | root <root>              | 2015-08-11 05:45 | Update         |    3
   100 | root <root>              | 2015-08-11 05:45 | Update         |    3
    99 | root <root>              | 2015-08-10 20:41 | Update         |    1
    98 | root <root>              | 2015-08-05 02:35 | Update         |    1
    97 | root <root>              | 2015-05-14 10:52 | Update         |    1
    96 | root <root>              | 2015-05-01 02:59 | Obsoleting     |    2
    95 | root <root>              | 2015-04-09 16:06 | Update         |    1  <
    94 | <xyz.user>            | 2015-03-28 08:49 | Update         |    1 ><
    93 | <xyz.usert>            | 2015-03-28 08:14 | Erase          |    3 ><
    92 | <xyz.user>            | 2015-03-13 07:46 | Install        |    6 ><
    91 | <xyz.user>             | 2015-03-13 05:45 | I, U           |   24 >
    90 | root <root>              | 2015-03-04 01:24 | Update         |    3

Але я не можу знайти спосіб визначення дати yum updateзапуску та успіху. Оскільки, якщо я перевіряю, наприклад, ідентифікатор транзакції 108, який позначений як "Оновлення", запущений 18 числа, я не знаходжу команду yum updateдля цієї конкретної дати:

history |grep 2015 |grep "yum update"

 5182  20150313-054444 > yum update

Ще один шлях, який я спробував, був, /var/log/yum.logале yum.logтакож покаже встановлення та оновлення. Якщо пакет оновлюється під час встановлення пакета e: g: yum install varnishі він потребує оновлення певних пакетів, наприклад: (varnish-libs-2.1.5-5.el6.i686, 3.0.7-1.el6.i686 тощо) це буде показано оновленим у yum.log

Чи є спосіб знайти дату yum updateзапуску і вона була успішною?


1
Дублікат serverfault.com/questions/389650/… "Як перевірити, коли оновлення було оновлено востаннє"
steve

Відповіді:


15

Ви майже відповіли на своє запитання. Ось спосіб знайти останні 5 оновлених пакетів:

grep Updated: /var/log/yum.log | tail -5

Приклад виводу:

Aug 05 13:28:34 Updated: virt-manager-common-1.1.0-9.git310f6527.fc21.noarch
Aug 05 13:28:34 Updated: glusterfs-libs-3.5.5-2.fc21.i686
Aug 05 13:28:35 Updated: virt-manager-1.1.0-9.git310f6527.fc21.noarch
Aug 05 13:28:36 Updated: virt-install-1.1.0-9.git310f6527.fc21.noarch
Aug 05 13:28:38 Updated: glusterfs-3.5.5-2.fc21.i686

1
кішку зловживають (подивіться на Безкорисне використання нагороди Cat ) та -10не потрібні, оскільки хвіст показує десять рядків за замовчуванням: так що краще: grep Updated: /var/log/yum.log | tail
sebelk

1
Ви абсолютно райт! Але це стара звичка котувати все) 10 потрібно (змінивши на 5), тому що ви можете вибрати будь-яку кількість записів, щоб зібрати. Ось чому я лишив номер із грепом.
обоховик

Це показує лише останні 5 оновлених пакетів. Розглянемо Senario нижче: Якщо пакет оновлюється під час встановлення пакету e: g: yum встановити лак, і він потребує оновлення певних пакетів, наприклад: (varnish-libs-2.1.5-5.el6.i686,3.0.7-1 .el6.i686 тощо) це буде показано оновленим у yum.log. Тоді як я хочу саме тоді, коли yum updateбуло запущено та було запущено успішно, а не останні 5 оновлених пакетів.
Kheshav Sewnundun

Можливо, ви хочете використовувати auditd та створювати правила для виконання yum.
sebelk

1
Можливо, що yum.log був очищений, якщо yum не використовувався після обертання журналів. Якщо це так, ви можете проглядати, наприклад, /var/log/yum.log-20180101тощо
user8675309

6

Спочатку потрібно визначити, що означає "оновлення". Напр. оновлення лише новішим ядром буде встановленням (і, швидше за все, стиранням старого). Якщо хтось робить "оновлення foo", це враховується? А як щодо "дистрибутивної синхронізації", яка закінчується лише оновленням (або якщо цього не відбувається)? Чи враховується, якщо транзакція провалилась?

Тоді перестаньте виходити, а це призведе лише до болю та страждань.

Використовувати API досить просто, наприклад (останній раз, коли було розпочато транзакцію з оновлення будь-якого пакету):

import yum
import time

yb = yum.YumBase()
for old in yb.history.old():
    if "Update" in (hpkg.state for hpkg in old.trans_data):
        print "Latest Update:", time.ctime(old.beg_timestamp)
        break

1

Наступні команди перелічують нещодавно встановлені або оновлені пакети RPM:

rpm -qa --last  | head

Він може включати пакети, встановлені і поза YUM. Ця команда також може працювати без привілеїв root.

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