more, grep aus letztem Ordner (Datum)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Quickly1971
Beiträge: 110
Registriert: 08.05.2009 15:26:32

more, grep aus letztem Ordner (Datum)

Beitrag von Quickly1971 » 29.10.2018 20:17:00

Hallo.

Ich hoffe ich konnte es im Betreff halbwegs nachvollziehbar beschreiben. :D
Was möchte ich erreichen?
Ich habe den VeeamClient auf auf meinem Debian installiert und möchte Werte in eine Logdatei schreiben. Soweit Ok.
Was mir jedoch unklar ist, keinen Plan...
Veeam schreibt die Logdatei in jeweils einen aktuellen Ordner.

Code: Alles auswählen

root@fern01:~# ls -lh /var/log/veeam/Backup/BackupJob1/
insgesamt 20K
drwxr-xr-x 2 root root 4,0K Okt 24 21:11 Session_20181024_211126_{f3dc9f79-4e74-43e3-a17e-83c6e2477bf8}
drwxr-xr-x 2 root root 4,0K Okt 25 18:30 Session_20181025_183001_{4ecaf833-5888-44c0-9971-694922a6298d}
drwxr-xr-x 2 root root 4,0K Okt 26 18:30 Session_20181026_183001_{6840767c-10db-4f29-a26f-096182673c76}
drwxr-xr-x 2 root root 4,0K Okt 27 18:30 Session_20181027_183001_{843a8a50-7d85-4b92-a1de-51bc7e07ec32}
drwxr-xr-x 2 root root 4,0K Okt 29 20:05 Session_20181029_183001_{2861a02e-a72c-4476-8d5d-88cde1ac88d7}
Mit more kann ich zwar den gewünschten Wert auslesen, jedoch ist mit die Variable nicht klar um zu sagen: Nimm immer die Datei Job.log aus dem letzten, aktuellen Ordner
Geht das überhaupt?

Also Teilerfolg ist:

Code: Alles auswählen

more /var/log/veeam/Backup/BackupJob1/Session_20181029*/Job.log | grep 'JOB STATUS'
Ausgabe

Code: Alles auswählen

[29.10.2018 18:30:34] <140491694118656> lpbcore| JOB STATUS: SUCCESS.
Soweit Ok, auf den letzten Wert bin ich halt scharf.

Diese Ordner-Variable macht mir zu schaffen. :cry:
Jedoch der Teil Session_20181029* wechselt ja. Und auch das Datum als Variable zu nehmen ist nicht immer erfolgreich, da das Backup ja evtl. über 24:00 Uhr hinaus geht.
Obwhl, wenn ich es recht überlege wäre das auch Ok.

Ich hoffe ich konnte mich halbwegs verständlich ausdrücken.

Dankeschön, Lars
Der Mensch hat drei Wege, klug zu werden.
Erstens durch Nachdenken: Das ist der edelste.
Zweitens durch Nachahmen: Das ist der leichteste.
Drittens durch Erfahrung: Das ist der bitterste.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: more, grep aus letztem Ordner (Datum)

Beitrag von Meillo » 29.10.2018 20:35:28

Suche zuerst das neueste Log, greppe es anschliessend:

Code: Alles auswählen

newestlog="`ls -d /var/log/veeam/Backup/BackupJob1/Session_* | tail -n 1`"
grep 'JOB STATUS' "$newestlog/Job.log"
Use ed once in a while!

Quickly1971
Beiträge: 110
Registriert: 08.05.2009 15:26:32

Re: more, grep aus letztem Ordner (Datum)

Beitrag von Quickly1971 » 30.10.2018 09:07:05

Vielen, vielen Dank!
Da wäre ich im Leben nicht drauf gekommen! :hail:
Der Mensch hat drei Wege, klug zu werden.
Erstens durch Nachdenken: Das ist der edelste.
Zweitens durch Nachahmen: Das ist der leichteste.
Drittens durch Erfahrung: Das ist der bitterste.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: more, grep aus letztem Ordner (Datum)

Beitrag von Meillo » 30.10.2018 09:24:38

Gerne. :-)
Use ed once in a while!

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: more, grep aus letztem Ordner (Datum)

Beitrag von uname » 30.10.2018 12:36:21

Sollte auch in einer Zeile gehen:

Code: Alles auswählen

grep 'JOB STATUS' "$(ls -d /var/log/veeam/Backup/BackupJob1/Session_* | tail -n 1)/Job.log"

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: more, grep aus letztem Ordner (Datum)

Beitrag von Meillo » 30.10.2018 14:27:22

uname hat geschrieben: ↑ zum Beitrag ↑
30.10.2018 12:36:21
Sollte auch in einer Zeile gehen:

Code: Alles auswählen

grep 'JOB STATUS' "$(ls -d /var/log/veeam/Backup/BackupJob1/Session_* | tail -n 1)/Job.log"
Ja. Wenn man das von Hand ausfuehren will, ist das die bessere Variante.

Ich bin von einem Script ausgegangen und habe aus paedagogischen Gruenden die Aufteilung in zwei Befehle verwendet.

Die Ergaenzung um den Einzeiler finde ich gut.
Use ed once in a while!

Antworten