Wann war das letzte dist-upgrade?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Benutzeravatar
whisper
Beiträge: 2531
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Wann war das letzte dist-upgrade?

Beitrag von whisper » 01.08.2020 20:51:45

Interessante Thema.

Code: Alles auswählen

zgrep -i -E "commandline|end-date" /var/log/apt/history* | grep "full-upgrade" -A 1 | grep -v "^-" | awk '!(NR%2){print $0 " " p}{p=$0}' | awk -F ' ' '{print $2 "; " $3 "; " $6}' | sort
Finde ich praktisch.
Nur bin ich zu blöde, das als Alias zu definieren.
Hat da jemand eine Lösung?

tobo
Beiträge: 809
Registriert: 10.12.2008 10:51:41

Re: Wann war das letzte dist-upgrade?

Beitrag von tobo » 01.08.2020 21:25:47

paedubucher hat geschrieben: ↑ zum Beitrag ↑
01.08.2020 19:47:59
Ich muss auch darauf achten, dass im gleichen Block kein Error drin steckt. Das macht die ganze Übung natürlich noch etwas schwieriger...
Nochmal eine Lösung mit sed; mit Bezug zum End-Date und ohne Errors. Die besorgt sich alle Blöcke (Start-Date bis End-Date), schaut/selektiert ob ein dist-upgrade oder full-upgrade vorhanden ist, entfernt alle Blöcke mit einem Error und gibt dann das Ende-Datum des Blocks aus. Danach noch sort und tail.

Code: Alles auswählen

zcat -f /var/log/apt/history* | sed -En '/^Start-Date:/{h;:a;n;H;/^End-Date:/!ba;x};/(full|dist)-upgrade/{/Error/d;s/^.*\n(End-Date.*)/\1/;s/.* (.*)  .*/\1/p}' | sort | tail -1
EDIT:
Da End-Date: immer auf der letzten Zeile eines Blocks liegt, geht es hintenraus auch noch ein wenig kürzer:

Code: Alles auswählen

zcat -f /var/log/apt/history* | sed -En '/^Start-Date:/{h;:a;n;H;/^End-Date:/!ba;x};/(full|dist)-upgrade/{/Error:/d;s/^.*\n.* (.*)  .*/\1/p}' | sort | tail -1
EDIT2:
Gelöscht - Falsche Logik!
Zuletzt geändert von tobo am 02.08.2020 12:24:21, insgesamt 3-mal geändert.

tobo
Beiträge: 809
Registriert: 10.12.2008 10:51:41

Re: Wann war das letzte dist-upgrade?

Beitrag von tobo » 01.08.2020 22:50:19

whisper hat geschrieben: ↑ zum Beitrag ↑
01.08.2020 20:51:45
Interessante Thema.

Code: Alles auswählen

zgrep -i -E "commandline|end-date" /var/log/apt/history* | grep "full-upgrade" -A 1 | grep -v "^-" | awk '!(NR%2){print $0 " " p}{p=$0}' | awk -F ' ' '{print $2 "; " $3 "; " $6}' | sort
Finde ich praktisch.
Nur bin ich zu blöde, das als Alias zu definieren.
Hat da jemand eine Lösung?
Die Sache mit dem Quoting und dem Vermischen von ' und "!? Da der \ innerhalb von '...' keine Wirkung hat, wird ' (innerhalb der '...') mit '\'' ersetzt. Das erste ' schließt, danach das Zeichen mit \' und wieder Öffnen mit ':

Code: Alles auswählen

alias hist='zgrep -i -E "commandline|end-date" /var/log/apt/history* | grep "full-upgrade" -A 1 | grep -v "^-" | awk '\''!(NR%2){print $0 " " p}{p=$0}'\'' | awk -F '\'' '\'' '\''{print $2 "; " $3 "; " $6}'\'' | sort'

Benutzeravatar
whisper
Beiträge: 2531
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Wann war das letzte dist-upgrade?

Beitrag von whisper » 02.08.2020 08:36:25

tobo hat geschrieben: ↑ zum Beitrag ↑
01.08.2020 22:50:19
:THX:

Antworten