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

11

Есть ли канонический способ узнать, когда последний раз 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

Хэмиш Даунер
источник

Ответы:

19

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

# 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 
Чакри
источник
1
Какую версию yum вы используете - у меня нет historyкоманды. (В основном мы все еще используем CentOS 5). На самом деле, только что попробовал и CentOS 6 есть. Но это не достаточно универсально для наших целей - но выглядит полезным для других.
Хэмиш Даунер
1
Да, это на Centos 6.x с версией Yum 3.2.29. Спасибо
Чакри
1
Обратите внимание, что если была комбинация Install и Update, в столбце Action говорится, I, Uчто grep немного усложняется. Это может произойти, если обновленный пакет зависит от нового пакета, вызывая установку нового пакета.
Хэмиш Даунер
Так как иногда обновления происходят при установке чего-то другого, если вы тоже хотите это увидеть, вы можете пропустить вывод через grep следующим образом: yum history | grep 'U', который будет перехватывать все запуски, связанные с обновлением.
JJC
2

Я думаю, что единственный способ, которым вы можете быть абсолютно уверены, это бег psacct.

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

Барт Де Вос
источник
1

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

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

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

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

Вы также можете посмотреть на Pulp, если он соответствует вашим потребностям.

Не сейчас
источник
0

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

rpm -qa --last  | head

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

Seff
источник