Trouver la dernière fois que la mise à jour yum a été exécutée

Suis build un script pour savoir quand une list de servers a été entièrement mise à jour pour la dernière fois avec yum update .

Je peux le find par un history |grep "yum update"|head -n 1 cependant, le problème est qu'un user aurait pu le lancer mais ne pas taper "y" dans l'invite.

Une autre façon que j'ai essayé était avec l' 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 peux pas find un moyen de déterminer la date à laquelle la yum update été lancée et a réussi. Puisque si je vérifie, par exemple, l'identifiant de transaction 108 qui est marqué comme "Update" lancé le 18, je ne trouve pas la command yum update pour cette date particulière:

 history |grep 2015 |grep "yum update" 5182 20150313-054444 > yum update 

Un autre path que j'ai essayé était avec /var/log/yum.log mais yum.log affichera les installations et les mises à jour aussi. Si un packageage est mis à jour lors de l'installation d'un packageage e: g: yum install varnish et 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 file yum.log

Existe-t-il un moyen de find la date à laquelle une yum update été lancée et qui a abouti?

Vous avez presque répondu à votre question. Voici un moyen de find 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 

Vous devez d'abord définir ce que signifie "mise à niveau". Par exemple. mettre à niveau avec seulement un nouveau kernel sera une installation (et probablement un effacement d'un ancien). Si quelqu'un fait "upgrade foo" cela count-t-il? Qu'en est-il de "distro-sync" qui finit par faire des mises à jour (ou si ce n'est pas le cas)? Cela count-t-il si la transaction a échoué?

Puis arrêtez la sortie de greping, cela ne conduira qu'à la douleur et à 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 à jour 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