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