Script zur Logauswertung
Hallo, liebe Profi-Scripter
Ich muß eine Logdatei auswerten und schaffe es einfach nicht, die benötigte Auswertung zu erstellen, obwohl eigentlich alle Infos vorhanden sind. Hoffentlich kann mir jemand helfen...
Das Ganze sollte unter Linux als Script laufen - entweder Bash, AWK oder Perl. Ich versuche mich jetzt schon den zweiten Tag daran - erfolglos!
Besten Dank schon mal immer im Voraus!
Gruß
Fred
Folgendes Problem:
ich habe eine Datei, welche in etwa die folgende Struktur hat:
Die Datei ist zeitchronologisch aufgebaut. Wenn beispielsweise kein Eintrag "rejected" kommt, bedeuted das, dass die Mail, deren Parameter darüber stehen, zugestellt wurde.
Wenn keine IP Adresse steht, gilt die letzte gelesene, da keine neue Verbindung aufgebaut wurde. Ich möchte jetzt alle Mails, welche abgewiesen wurden in einer Tabelle.
Also in der folgenden Form etwa, wobei in diesem Fall hier die Tabelle nur 3 Einträge mit 2 unterschiedl. IPs hätte.
ich habe eine Datei, welche in etwa die folgende Struktur hat:
XXX uninteressante Zeile
XXX connected to IP xxx.xxx.xxx.xxx
XXX uninteressante Zeile
XXX RCPT TO Empfaenger@adresse.de
XXX uninteressante Zeile
XXX uninteressante Zeile
XXX MAIL FROM Empfaenger@adresse.de
XXX uninteressante Zeile
XXX uninteressante Zeile
XXX RCPT TO Empfaenger@adresse.de
XXX uninteressante Zeile
XXX MAIL FROM Empfaenger@adresse.de
XXX uninteressante Zeile
XXX Mail rejected: reason
XXX uninteressante Zeile
XXX RCPT TO Empfaenger@adresse.de
XXX uninteressante Zeile
XXX MAIL FROM Empfaenger@adresse.de
XXX RCPT TO Empfaenger@adresse.de
XXX uninteressante Zeile
XXX MAIL FROM Empfaenger@adresse.de
XXX Mail rejected: reason
XXX connected to IP xxx.xxx.xxx.xxx
XXX uninteressante Zeile
XXX RCPT TO Empfaenger@adresse.de
XXX MAIL FROM Empfaenger@adresse.de
XXX Mail rejected: reason
Die Datei ist zeitchronologisch aufgebaut. Wenn beispielsweise kein Eintrag "rejected" kommt, bedeuted das, dass die Mail, deren Parameter darüber stehen, zugestellt wurde.
Wenn keine IP Adresse steht, gilt die letzte gelesene, da keine neue Verbindung aufgebaut wurde. Ich möchte jetzt alle Mails, welche abgewiesen wurden in einer Tabelle.
Also in der folgenden Form etwa, wobei in diesem Fall hier die Tabelle nur 3 Einträge mit 2 unterschiedl. IPs hätte.
IP-Adresse To From Reason
--------------------------------------
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 147049
Url: https://administrator.de/contentid/147049
Ausgedruckt am: 28.03.2024 um 15:03 Uhr
3 Kommentare
Neuester Kommentar
Hallo Fred,
ohne das genaue Format des Zeitstempels wird man dir kaum helfen können,
XXX ist nicht sehr hilfreich.
Eine Reduzierung auf relevante Zeilen könntest du schon einmal hiermit erreichen:
Gruß
LotPings
ohne das genaue Format des Zeitstempels wird man dir kaum helfen können,
XXX ist nicht sehr hilfreich.
Eine Reduzierung auf relevante Zeilen könntest du schon einmal hiermit erreichen:
grep '\(connected to IP\)\|\(RCPT.TO\)\|\(MAIL FROM\)\|\(Mail rejected:\)' <test.log
Gruß
LotPings
Hallo Fred,
ich habe dich auch schon Anfangs verstanden.
Um aber geeignete RegExp zu entwickeln ist schon der genaue Aufbau der Zeilen notwendig, nicht eine idealisierte Version.
Wenn da vertrauliche Informationen drin sind, neutralisiere sie eben.
Besteht der reason bei rejected aus mehreren Worten?
Im Prinizp würde ich die Adressen aus den gefundenen Zeilen in eine Variable setzen und erst mit der rejected Zeile ausgeben.
Funktioniert der grep-Befehl von oben denn?
Gruß
LotPings
PS: Vom Scripten verstehe ich einiges, bei der bash (einschl. sed, awk) bin ich aber noch Anfänger
ich habe dich auch schon Anfangs verstanden.
Um aber geeignete RegExp zu entwickeln ist schon der genaue Aufbau der Zeilen notwendig, nicht eine idealisierte Version.
Wenn da vertrauliche Informationen drin sind, neutralisiere sie eben.
Besteht der reason bei rejected aus mehreren Worten?
Im Prinizp würde ich die Adressen aus den gefundenen Zeilen in eine Variable setzen und erst mit der rejected Zeile ausgeben.
Funktioniert der grep-Befehl von oben denn?
Gruß
LotPings
PS: Vom Scripten verstehe ich einiges, bei der bash (einschl. sed, awk) bin ich aber noch Anfänger