Encuentra la última vez que se ejecutó la actualización de yum

13

Estoy creando un script para averiguar cuándo se actualizó por completo una lista de servidores por última vez yum update.

history |grep "yum update"|head -n 1Sin embargo, puedo encontrarlo , el problema es que un usuario podría haberlo lanzado pero no escribió "y" en el indicador.

Otra forma que intenté fue con 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

Pero no puedo encontrar una manera de determinar la fecha en que yum updatese lanzó y tuvo éxito. Dado que si verifico, por ejemplo, el ID de transacción 108 que está marcado como "Actualización" lanzado el 18, no encuentro el comando yum updatepara esa fecha en particular:

history |grep 2015 |grep "yum update"

 5182  20150313-054444 > yum update

Otra ruta que probé fue con /var/log/yum.logpero yum.logtambién mostrará las instalaciones y actualizaciones. Si se actualiza un paquete mientras se instala un paquete e: g: yum install varnishy requiere una actualización de ciertos paquetes, por ejemplo: (varnish-libs-2.1.5-5.el6.i686, 3.0.7-1.el6.i686, etc.) se mostrará como actualizado en yum.log

¿Hay alguna manera de encontrar la fecha en que yum updatese lanzó y fue exitoso?

Kheshav Sewnundun
fuente
1
Duplicado de serverfault.com/questions/389650/… "Cómo comprobar cuándo se ejecutó la última actualización de yum"
steve

Respuestas:

15

Casi respondiste tu pregunta. Aquí hay una manera de encontrar los últimos 5 paquetes actualizados:

grep Updated: /var/log/yum.log | tail -5

Ejemplo de salida:

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
fuente
1
Se usa mal el gato (eche un vistazo al Premio al uso inútil del gato ), y -10no es necesario ya que la cola muestra diez líneas por defecto: así que es mejor: grep Updated: /var/log/yum.log | tail
sebelk
1
Eres absolutamente wright! Pero ese es un viejo hábito para atrapar todo) Se necesita 10 (cambiado a 5) porque puede elegir cualquier número de registros para grep. Es por eso que dejé el número con grep.
obohovyk
Esto muestra solo los últimos 5 paquetes actualizados. Considere Senario a continuación: si se actualiza un paquete al instalar un paquete e: g: yum install barniz y requiere una actualización de ciertos paquetes, por ejemplo: (varnish-libs-2.1.5-5.el6.i686,3.0.7-1 .el6.i686, etc.) esto se mostrará como actualizado en yum.log. Mientras que quiero exactamente cuándo yum updatese lanzó y se ejecutó con éxito, no los últimos 5 paquetes actualizados.
Kheshav Sewnundun
Es posible que desee utilizar auditado y crear reglas para la ejecución de yum.
sebelk
1
Es posible que yum.log se haya borrado si yum no se ha utilizado desde que giraron los registros. Si ese es el caso, puede explorar, por ejemplo, /var/log/yum.log-20180101etc.
user8675309
6

Primero debe definir qué significa "actualización". P.ej. la actualización con solo un kernel más nuevo será una instalación (y probablemente un borrado de uno más antiguo). Si alguien hace "upgrade foo", ¿eso cuenta? ¿Qué pasa con "distro-sync" que termina simplemente haciendo actualizaciones (o si no lo hace)? ¿Cuenta si la transacción falló?

Luego detenga la producción de greping, solo provocará dolor y sufrimiento.

Usar la API es bastante simple, por ejemplo (la última vez que se inició una transacción para actualizar cualquier paquete):

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
fuente
1

El siguiente comando enumera los paquetes RPM recientemente instalados o actualizados:

rpm -qa --last  | head

También puede incluir paquetes instalados fuera de YUM. Este comando también puede ejecutarse sin privilegios de root.

Seff
fuente