Rechercher la dernière mise à jour de yum

13

Je construis un script pour savoir quand une liste de serveurs a été entièrement mise à jour pour la dernière fois yum update.

Je peux le trouver par un history |grep "yum update"|head -n 1cependant, le problème est qu'un utilisateur aurait pu le lancer mais n'a pas tapé "y" dans l'invite.

J'ai aussi essayé avec 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

Mais je ne trouve pas de moyen de déterminer la date de yum updatelancement et de réussite. Puisque si je vérifie, par exemple, l'ID de transaction 108 qui est marqué comme "Update" lancé le 18, je ne trouve pas la commande yum updatepour cette date particulière:

history |grep 2015 |grep "yum update"

 5182  20150313-054444 > yum update

Un autre chemin que j'ai essayé était avec /var/log/yum.logmais yum.logaffichera également les installations et les mises à jour. Si un package est mis à jour lors de l'installation d'un package e: g: yum install varnishet qu'il nécessite une mise à jour de certains packages, par exemple: (varnish-libs-2.1.5-5.el6.i686, 3.0.7-1.el6.i686 etc.), cela sera affiché comme mis à jour dans le yum.log

Existe-t-il un moyen de trouver la date de yum updatelancement et de succès?

Kheshav Sewnundun
la source
1
Duplicate of serverfault.com/questions/389650/… "Comment vérifier la dernière exécution de la mise à jour yum"
steve

Réponses:

15

Vous avez presque répondu à votre question. Voici un moyen de trouver les 5 derniers packages mis à jour:

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

Exemple de sortie:

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
la source
1
cat est mal utilisé (jetez un œil à The Useless Use of Cat Award ), et -10n'est pas nécessaire car la queue affiche dix lignes par défaut: c'est donc mieux: grep Updated: /var/log/yum.log | tail
sebelk
1
Tu es absolument bien! Mais c'est une vieille habitude de tout chatter) 10 (changé en 5) est nécessaire car vous pouvez choisir n'importe quel nombre d'enregistrements à grep. C'est pourquoi j'ai quitté le numéro avec grep.
obohovyk
Cela ne montre que les 5 derniers packages mis à jour. Considérez Senario ci-dessous: Si un package est mis à jour lors de l'installation d'un package e: g: yum installe le vernis et qu'il nécessite une mise à jour de certains packages, par exemple: (varnish-libs-2.1.5-5.el6.i686,3.0.7-1 .el6.i686 etc) cela sera affiché comme mis à jour dans le yum.log. Alors que je veux exactement quand a yum updateété lancé et exécuté avec succès, pas les 5 derniers packages mis à jour.
Kheshav Sewnundun
Vous voudrez peut-être utiliser auditd et créer des règles pour l'exécution de yum.
sebelk
1
Il est possible que yum.log ait été effacé si yum n'a pas été utilisé depuis la rotation des journaux. Si tel est le cas, vous pouvez passer par exemple, /var/log/yum.log-20180101etc.
user8675309
6

Vous devez d'abord définir ce que signifie «mise à niveau». Par exemple. la mise à niveau avec seulement un noyau plus récent sera une installation (et probablement l'effacement d'un ancien). Si quelqu'un fait une "mise à niveau foo", cela compte-t-il? Qu'en est-il de la "distro-sync" qui finit par faire des mises à niveau (ou si ce n'est pas le cas)? Est-ce que cela compte si la transaction a échoué?

Ensuite, arrêtez de produire des cris, cela ne fera que causer de la douleur et de la souffrance.

L'utilisation de l'API est assez simple, par exemple (la dernière fois qu'une transaction a été lancée pour mettre à niveau un package):

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
la source
1

La commande suivante répertorie les packages RPM récemment installés ou mis à jour:

rpm -qa --last  | head

Il peut également inclure des packages installés en dehors de YUM. Cette commande peut également s'exécuter sans privilège root.

Seff
la source