Znajdź ostatnią aktualizację yum

13

Buduję skrypt, aby dowiedzieć się, kiedy lista serwerów została ostatnio w pełni zaktualizowana yum update.

Mogę go history |grep "yum update"|head -n 1jednak znaleźć, problem polega na tym, że użytkownik mógł go uruchomić, ale nie wpisał „y” w wierszu polecenia.

Innym sposobem byłam 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

Ale nie mogę znaleźć sposobu na określenie daty yum updateuruchomienia i powodzenia. Ponieważ jeśli sprawdzę na przykład identyfikator transakcji 108, który jest oznaczony jako „Aktualizacja” uruchomiony 18-go, nie znajdę polecenia yum updatedla tej konkretnej daty:

history |grep 2015 |grep "yum update"

 5182  20150313-054444 > yum update

Inną ścieżką, którą próbowałem, było, /var/log/yum.logale yum.logpokaże także instalacje i aktualizacje. Jeśli pakiet jest aktualizowany podczas instalacji pakietu e: g: yum install varnishi wymaga aktualizacji niektórych pakietów, np .: (varnish-libs-2.1.5-5.el6.i686, 3.0.7-1.el6.i686 itp.), będzie wyświetlany jako zaktualizowany w yum.log

Czy istnieje sposób, aby ustalić datę yum updateuruchomienia i powodzenia?

Kheshav Sewnundun
źródło
1
Duplikat serverfault.com/questions/389650 / ... „Jak sprawdzić, kiedy ostatnia aktualizacja była ostatnia”
Steve

Odpowiedzi:

15

Prawie odpowiedziałeś na swoje pytanie. Oto sposób na znalezienie 5 najnowszych zaktualizowanych pakietów:

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

Przykład wyjściowy:

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
źródło
1
kot jest niewłaściwie wykorzystywany (patrz Nagroda za bezużyteczne korzystanie z kota ) i -10nie jest potrzebny, ponieważ ogon domyślnie wyświetla dziesięć linii: więc lepiej: grep Updated: /var/log/yum.log | tail
sebelk
1
Jesteś absolutnie w porządku! Ale to stary nawyk, aby wszystko cat). 10 (zmienione na 5) jest potrzebne, ponieważ możesz wybrać dowolną liczbę rekordów do grep. Dlatego zostawiłem numer z grep.
obohovyk,
Pokazuje tylko ostatnie 5 zaktualizowanych pakietów. Rozważ Senario poniżej: Jeśli pakiet jest aktualizowany podczas instalowania pakietu e: g: yum zainstaluj lakier i wymaga aktualizacji niektórych pakietów, np .: (varnish-libs-2.1.5-5.el6.i686,3.0.7-1 .el6.i686 itp.) Zostanie to pokazane jako zaktualizowane w yum.log. Podczas gdy chcę dokładnie, kiedy program yum updatezostał uruchomiony i został pomyślnie uruchomiony, a nie 5 ostatnich zaktualizowanych pakietów.
Kheshav Sewnundun
Możesz użyć audytu i tworzenia reguł dla wykonania yum.
sebelk
1
Możliwe, że yum.log został wyczyszczony, jeśli yum nie został użyty od czasu rotacji logów. W takim przypadku możesz grep poprzez np. /var/log/yum.log-20180101Etc
user8675309
6

Najpierw musisz zdefiniować, co oznacza „aktualizacja”. Na przykład. aktualizacja tylko z nowszym jądrem będzie instalacją (i prawdopodobnie usunięciem starszego). Czy to się liczy, jeśli ktoś zrobi „upgrade foo”? A co z „synchronizacją synchronizacji”, która kończy się właśnie aktualizacjami (a jeśli nie)? Czy to się liczy, jeśli transakcja się nie powiedzie?

Następnie przestańcie wytwarzać energię, doprowadzi to tylko do bólu i cierpienia.

Korzystanie z interfejsu API jest dość proste, np. (Ostatni raz rozpoczęto transakcję w celu uaktualnienia dowolnego pakietu):

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
źródło
1

Następujące polecenie wyświetla listę ostatnio zainstalowanych lub zaktualizowanych pakietów RPM:

rpm -qa --last  | head

Może zawierać również pakiety zainstalowane poza YUM. To polecenie można również uruchomić bez uprawnień administratora.

Seff
źródło