Найти последний раз, когда запускалось обновление yum

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/… "Как проверить, когда последний раз запускалось обновление yum"
Стив

Ответы:

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
obohovyk
источник
1
Кошка используется не по назначению (посмотрите на награду «Бесполезное использование кошки» ) и -10не нужна, так как хвост показывает десять строк по умолчанию: так что лучше: grep Updated: /var/log/yum.log | tail
sebelk
1
Вы абсолютно правы! Но это старая привычка следить за всем) 10 (изменено на 5) необходимо, потому что вы можете выбрать любое количество записей для grep. Вот почему я оставил номер с grep.
Обоховик
Это показывает только последние 5 обновленных пакетов. Рассмотрим Senario ниже: Если пакет обновляется во время установки пакета, e: g: yum устанавливает лак и требует обновления определенных пакетов, например: (varnish-libs-2.1.5-5.el6.i686,3.0.7-1 .el6.i686 и т. д.) это будет показано как обновленное в yum.log. Принимая во внимание, что я хочу точно, когда yum updateбыл запущен и был успешно запущен, а не последние 5 обновленных пакетов.
Хешав Шевнундун
Вы можете использовать audd и создавать правила для выполнения yum.
Себелк
1
Возможно, что yum.log был очищен, если yum не использовался с тех пор, как журналы вращались. Если это так, вы можете просмотреть, например, и /var/log/yum.log-20180101т. Д.
user8675309
6

Сначала нужно определить, что означает «обновление». Например. обновление только с более новым ядром будет установкой (и, вероятно, удалением более старого). Если кто-то делает "upgrade foo", это считается? А как насчет "distro-sync", который в конечном итоге просто делает обновления (или, если это не так)? Это считается, если транзакция не удалась?

Тогда прекратите срывать вывод, это приведет только к боли и страданиям.

Использовать 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.

Seff
источник