Encontre a última vez que a atualização yum foi executada

13

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 updatefoi 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 updatepara essa data específica:

history |grep 2015 |grep "yum update"

 5182  20150313-054444 > yum update

Outro caminho que tentei foi, /var/log/yum.logmas yum.logmostrará instalações e atualizações também. Se um pacote é atualizado durante a instalação de um pacote e: g: yum install varnishe 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 updatefoi lançado e foi bem-sucedido?

Kheshav Sewnundun
fonte
1
Duplicata de serverfault.com/questions/389650/… "Como verificar quando a atualização do yum foi executada pela última vez"
steve

Respostas:

15

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:

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
fonte
1
gato é mal utilizado (dar uma olhada em O uso inútil de gato Award ), e -10não é necessário como mostra a cauda linhas dez por padrão: por isso é melhor: grep Updated: /var/log/yum.log | tail
sebelk
1
Você é absolutamente sincero! Mas esse é um velho hábito de criar tudo. 10 (alterado para 5) é necessário porque você pode escolher qualquer número de registros para grep. É por isso que eu deixei o número com grep.
obohovyk
Isso mostra apenas os últimos 5 pacotes atualizados. Considere o Senario abaixo: 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 conforme atualizado no yum.log. Considerando que eu quero exatamente quando o yum updatefoi lançado e foi executado com êxito, não os últimos 5 pacotes atualizados.
Kheshav Sewnundun
Você pode usar o auditd e criar regras para a execução do yum.
sebelk
1
É possível que o yum.log tenha sido limpo se o yum não tiver sido usado desde que os logs foram rotacionados. Se for esse o caso, você pode grep através, por exemplo /var/log/yum.log-20180101etc
user8675309
6

Primeiro, 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):

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
James Antill
fonte
1

O comando a seguir lista os pacotes RPM instalados ou atualizados recentemente:

rpm -qa --last  | head

Pode incluir pacotes instalados fora do YUM também. Este comando também pode ser executado sem privilégios de root.

Seff
fonte