Назад | Перейти на главную страницу

Как узнать, когда было выполнено последнее обновление yum

Есть ли канонический способ узнать последний раз, когда yum update запускался в системе?

Наша установка такова, что у нас есть промежуточные серверы, которые запускают автоматические обновления, и если они не падают, мы будем вручную обновлять наши производственные серверы примерно раз в месяц (за исключением критических обновлений). (Я говорю вручную, в идеале я хочу вручную запускать обновление для всех из них, но это другая проблема).

Но вы становитесь заняты, задачи сбиваются и т. Д. Итак, я хочу настроить проверку nagios, которая начнет нас беспокоить, если мы оставим ее слишком долго.

Поиск в Интернете не дал мне очень далеко. Порывшись в системе, лучшее, что я нашел до сих пор, было бы примерно таким:

grep Updated /var/log/yum.log | tail -1 | cut -d' ' -f 1-2

что дает мне что-то вроде Mar 12 который я затем могу преобразовать в дату. Есть несколько мелких сложностей с датой в этом году или в прошлом году, и мне также нужно проверить /var/log/yum.log.1 в случае проверки сразу после логротации. Но это всего лишь детали сценария.

Конечно, это можно «обмануть» обновлением отдельного пакета, а не общим обновлением.

Есть ли более канонический способ узнать, когда yum update был запущен?

Редактировать: Теперь я написал плагин Nagios NRPE, который использует идею, которую я выдвинул в вопросе. Вы можете взять это из https://github.com/aptivate/check_yum_last_update

Параметр истории yum позволяет пользователю просматривать, что произошло в прошлых транзакциях. Чтобы было проще, вы можете использовать grep Обновить из вкуснятина история

# yum  history
Loaded plugins: fastestmirror, refresh-packagekit
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    41 | root <root>              | 2012-04-27 20:17 | Install        |   19   
    40 | root <root>              | 2011-11-20 10:09 | Install        |   10   
    39 | root <root>              | 2011-11-20 08:14 | Install        |    1 E<
    38 | root <root>              | 2011-11-19 15:46 | Update         |    1 

Я думаю, единственный способ убедиться в этом - это запустить psacct.

Это позволит вам запустить lastcomm yum. Если вы это проанализируете, вы узнаете, кто и когда запустил.

Я предполагаю, что вы указываете набор серверов Dev на репозиторий Dev yum?

Вы можете выполнить автоматическое обновление в сценарии cron / puppet / chef, который в случае успеха записывает в файл. (сказать /etc/yum_last)

Тогда вы могли бы использовать yum check-update периодически в cron / other на серверах Dev, чтобы узнать, доступны ли какие-либо обновления. Если эта команда говорит, что доступно> 0 обновлений, вы сравниваете текущую дату с меткой времени файла, который вы создали при последнем автоматическом обновлении yum.

Если разница в датах увеличивается в днях, вы можете получить оповещение Nagios.

Вы также можете посмотреть Целлюлоза если это соответствует вашим потребностям.

Следующая команда выводит список недавно установленных или обновленных пакетов RPM:

rpm -qa --last  | head

Он также может включать в себя пакеты, установленные вне YUM. Эту команду также можно запускать без привилегий root.

Вы можете запросить эту информацию непосредственно из базы данных Yum History SQLite с привилегиями root, используя этот оператор:

SELECT datetime( max(dt_end), 'unixepoch', 'localtime') FROM trans WHERE cmdline LIKE '%update%'

Файл SQLite для запроса имеет 2 вероятных местоположения:

  • /var/lib/dnf/history.sqlite
  • /var/lib/yum/history.sqlite

Пример: https://bigfix.me/relevance/details/3022966

Связанный: https://unix.stackexchange.com/questions/224627/find-last-time-yum-update-was-run