Estou criando um script para descobrir quando uma lista de servidores foi totalmente atualizada pela última vez yum update
.
Eu posso encontrá-lo por um history |grep "yum update"|head -n 1
, no entanto, o problema é que um usuário poderia ter iniciado, mas não digitou "y" no prompt.
Outra maneira que tentei foi com 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
Mas não consigo encontrar uma maneira de determinar a data em que yum update
foi lançado e foi bem-sucedido. Como se eu verificar, por exemplo, o ID da transação 108 marcado como "Atualização" lançado no dia 18, não encontro o comando yum update
para essa data específica:
history |grep 2015 |grep "yum update"
5182 20150313-054444 > yum update
Outro caminho que tentei foi, /var/log/yum.log
mas yum.log
mostrará instalações e atualizações também. Se um pacote é atualizado durante a instalação de um pacote e: g: yum install varnish
e requer uma atualização de certos pacotes, por exemplo: (varnish-libs-2.1.5-5.el6.i686, 3.0.7-1.el6.i686 etc), isso será mostrado como atualizado no yum.log
Existe uma maneira de encontrar a data em que um yum update
foi lançado e foi bem-sucedido?
Respostas:
Você quase respondeu sua pergunta. Aqui está uma maneira de encontrar os 5 pacotes atualizados mais recentes:
grep Updated: /var/log/yum.log | tail -5
Exemplo de saída:
fonte
-10
não é necessário como mostra a cauda linhas dez por padrão: por isso é melhor:grep Updated: /var/log/yum.log | tail
yum update
foi lançado e foi executado com êxito, não os últimos 5 pacotes atualizados./var/log/yum.log-20180101
etcPrimeiro, você precisa definir o que "atualização" significa. Por exemplo. atualizar com apenas um kernel mais recente será uma instalação (e provavelmente uma exclusão de um kernel mais antigo). Se alguém "atualizar foo", isso conta? E quanto à "distro-sync" que acaba fazendo apenas atualizações (ou se não)? Isso conta se a transação falhar?
Então pare de saudar a saída, isso só levará à dor e ao sofrimento.
O uso da API é bastante simples, por exemplo (a última vez que uma transação foi iniciada para atualizar qualquer pacote):
fonte
O comando a seguir lista os pacotes RPM instalados ou atualizados recentemente:
Pode incluir pacotes instalados fora do YUM também. Este comando também pode ser executado sem privilégios de root.
fonte