Finde das letzte Mal, als dein Update ausgeführt wurde

12

Ich erstelle ein Skript, um herauszufinden, wann eine Liste von Servern zuletzt vollständig aktualisiert wurde yum update.

Ich kann es an einem finden history |grep "yum update"|head -n 1, das Problem ist jedoch, dass ein Benutzer es hätte starten können, aber nicht "y" in die Eingabeaufforderung eingegeben hat.

Ein anderer Weg, den ich versuchte, war mit 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

Aber ich kann keine Möglichkeit finden, das Datum zu bestimmen, an dem der yum updateStart erfolgte und erfolgreich war. Wenn ich beispielsweise die Transaktions-ID 108 überprüfe, die als "Update" markiert ist und am 18. gestartet wurde, finde ich den Befehl yum updatefür dieses bestimmte Datum nicht:

history |grep 2015 |grep "yum update"

 5182  20150313-054444 > yum update

Ein anderer Pfad, den ich ausprobiert habe, war mit, zeigt /var/log/yum.logaber yum.logauch Installationen und Updates an. Wenn ein Paket während der Installation eines Pakets yum install varnishaktualisiert wird, z. B. und eine Aktualisierung bestimmter Pakete erforderlich ist, z. B.: (Varnish-libs-2.1.5-5.el6.i686, 3.0.7-1.el6.i686 usw.) dies wird im yum.log als aktualisiert angezeigt

Gibt es eine Möglichkeit, das Datum zu ermitteln, an dem a yum updategestartet wurde und erfolgreich war?

Kheshav Sewnundun
quelle
1
Duplikat von serverfault.com/questions/389650/… "So überprüfen Sie, wann Ihr Update zuletzt ausgeführt wurde"
Steve

Antworten:

15

Sie haben Ihre Frage fast beantwortet. Hier finden Sie eine Möglichkeit, die neuesten 5 aktualisierten Pakete zu finden:

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

Ausgabebeispiel:

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
quelle
1
Katze wird missbraucht (siehe The Useless Use of Cat Award ) und -10wird nicht benötigt, da der Schwanz standardmäßig zehn Zeilen grep Updated: /var/log/yum.log | tail
anzeigt.
1
Du bist absolut Wright! Aber das ist eine alte Angewohnheit, alles zu katzen) 10 (geändert in 5) wird benötigt, weil Sie eine beliebige Anzahl von Datensätzen zum Grepen auswählen können. Deshalb habe ich Nummer mit grep verlassen.
Obohovyk
Dies zeigt nur die letzten 5 aktualisierten Pakete. Betrachten Sie Senario unten: Wenn ein Paket während der Installation eines Pakets aktualisiert wird, z. B. Installationslack, und es erfordert eine Aktualisierung bestimmter Pakete, z. B.: (Varnish-libs-2.1.5-5.el6.i686,3.0.7-1 .el6.i686 usw.) Dies wird im yum.log als aktualisiert angezeigt. Während ich genau möchte, wann das yum updategestartet wurde und erfolgreich ausgeführt wurde, nicht die letzten 5 aktualisierten Pakete.
Kheshav Sewnundun
Möglicherweise möchten Sie auditd verwenden und Regeln für die Ausführung von yum erstellen.
sebelk
1
Es ist möglich, dass yum.log gelöscht wurde, wenn yum seit dem Drehen der Protokolle nicht mehr verwendet wurde. Wenn dies der Fall ist, können Sie zB /var/log/yum.log-20180101usw.
nachsehen
6

Zuerst müssen Sie definieren, was "Upgrade" bedeutet. Z.B. Ein Upgrade mit nur einem neueren Kernel ist eine Installation (und wahrscheinlich ein Löschen eines älteren). Wenn jemand "Upgrade foo" macht, zählt das? Was ist mit "Distribution-Sync", bei dem nur Upgrades durchgeführt werden (oder nicht)? Zählt es, wenn die Transaktion fehlgeschlagen ist?

Dann hör auf, die Ausgabe zu greifen, es wird nur zu Schmerzen und Leiden führen.

Die Verwendung der API ist ziemlich einfach, z. B. (zuletzt, als eine Transaktion gestartet wurde, um ein Paket zu aktualisieren):

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
quelle
0

Der folgende Befehl listet kürzlich installierte oder aktualisierte RPM-Pakete auf:

rpm -qa --last  | head

Es kann auch Pakete enthalten, die außerhalb von YUM installiert sind. Dieser Befehl kann auch ohne Root-Berechtigung ausgeführt werden.

Seff
quelle