Trova l'ultima volta che è stato eseguito l'aggiornamento yum


13

Sto costruendo uno script per scoprire quando un elenco di server è stato aggiornato per l'ultima volta yum update.

Lo trovo history |grep "yum update"|head -n 1comunque, il problema è che un utente potrebbe averlo lanciato ma non ha digitato "y" nel prompt.

Un altro modo con cui ho provato è stato 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

Ma non riesco a trovare un modo per determinare la data in cui è yum updatestato lanciato e ha avuto successo. Dal momento che se controllo, ad esempio, l'ID transazione 108 che è contrassegnato come "Aggiornamento" avviato il 18, non trovo il comando yum updateper quella data particolare:

history |grep 2015 |grep "yum update"

 5182  20150313-054444 > yum update

Un altro percorso che ho provato è stato con /var/log/yum.logma yum.logmostrerà anche installazioni e aggiornamenti. Se un pacchetto viene aggiornato durante l'installazione di un pacchetto e: g: yum install varnishe richiede un aggiornamento di alcuni pacchetti, ad esempio: (varnish-libs-2.1.5-5.el6.i686, 3.0.7-1.el6.i686 ecc.) Questo verrà mostrato come aggiornato in yum.log

C'è un modo per trovare la data in cui è yum updatestata lanciata e ha avuto successo?


1
Duplicato di serverfault.com/questions/389650/… "Come verificare quando è stato eseguito l'ultimo aggiornamento di yum"
steve

Risposte:


15

Hai quasi risposto alla tua domanda. Ecco un modo per trovare gli ultimi 5 pacchetti aggiornati:

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

Esempio di output:

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

1
cat è abusato (dai un'occhiata a The Useless Use of Cat Award ), e -10non è necessario in quanto la coda mostra dieci righe per impostazione predefinita: quindi è meglio: grep Updated: /var/log/yum.log | tail
sebelk

1
Sei assolutamente arrabbiato! Ma questa è una vecchia abitudine di catalogare tutto) 10 (modificato in 5) è necessario perché puoi scegliere qualsiasi numero di record da grep. Ecco perché ho lasciato il numero con grep.
obohovyk,

Questo mostra solo gli ultimi 5 pacchetti aggiornati. Considera Senario di seguito: se un pacchetto viene aggiornato durante l'installazione di un pacchetto e: g: yum installa vernice e richiede un aggiornamento di alcuni pacchetti, ad esempio: (varnish-libs-2.1.5-5.el6.i686,3.0.7-1 .el6.i686 ecc.), questo verrà mostrato come aggiornato in yum.log. Mentre voglio esattamente quando è yum updatestato lanciato ed è stato eseguito con successo, non gli ultimi 5 pacchetti aggiornati.
Kheshav Sewnundun,

Potresti voler usare auditd e creare regole per l'esecuzione di yum.
sebelk,

1
È possibile che yum.log sia stato cancellato se yum non è stato utilizzato da quando i log sono stati ruotati. In tal caso, puoi consultare ad esempio /var/log/yum.log-20180101ecc.
user8675309

6

Per prima cosa devi definire cosa significa "aggiornamento". Per esempio. l'aggiornamento con solo un kernel più recente sarà un'installazione (e probabilmente una cancellazione di uno più vecchio). Se qualcuno fa "upgrade foo" conta? Che dire di "distro-sincronizzazione" che finisce per fare solo gli aggiornamenti (o se non lo fa)? Conta se la transazione non è riuscita?

Quindi interrompi il grepping output, porterà solo al dolore e alla sofferenza.

L'uso dell'API è piuttosto semplice, ad es. (L'ultima volta che è stata avviata una transazione per aggiornare qualsiasi pacchetto):

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

1

Il seguente comando elenca i pacchetti RPM installati o aggiornati di recente:

rpm -qa --last  | head

Può includere pacchetti installati anche al di fuori di YUM. Questo comando può anche essere eseguito senza il privilegio di root.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.