litrax
Grünschnabel
Hallo Unix- Freunde
ich hab ein Problem bei dem ich nicht weiterkomme:
ISTZUSTAND
Ich suche mir im Moment per Script aus logdateien Fehlermeldungen heraus (mit grep).
Ich gehe dabei mit Excludes vor (-v).
Als ich das Script die ersten paar mal gestartet habe bekam ich alle Fehlermeldungen.
Dann habe ich unwichtige Meldungen in ein Patternfile geschrieben und mit
werden diese Patterns jetzt rausgefiltert.
Nun zu meinem eigentlichen Problem bei dem ich noch ein paar Ideen von euch gebrauchen könnte:
Die Logfiles sehen eigentlich so aus:
Ich filtere jetzt im Patternfile gewisse wiederkehrende Header der Fehlermeldungen raus. Somit bekomme ich folgendes Ergebnis:
SOLLZUSTAND
Eigentlich ist das für mich nur eine Notlösung, denn was ich eigentlich möchte ist Folgendes:
BEISPIEL
Wenn ich alles bis auf die Zeile:
Übrigens: ich habe schon nach sowas gesucht und kam auch bis zu folgendem AWK- Statement:
Aber tiefer in awk oder sonstige Befehle reichen meine Kenntnisse jetzt noch nicht.
Bitte gebt mir mal einen Hinweis wie ich solch ein Konstrukt aufbauen könnte.
Ein Lösungsvorschlag wäre auch in Ordnung ;-)
Schönes Wochenende
Litrax
ich hab ein Problem bei dem ich nicht weiterkomme:
ISTZUSTAND
Ich suche mir im Moment per Script aus logdateien Fehlermeldungen heraus (mit grep).
Ich gehe dabei mit Excludes vor (-v).
Als ich das Script die ersten paar mal gestartet habe bekam ich alle Fehlermeldungen.
Dann habe ich unwichtige Meldungen in ein Patternfile geschrieben und mit
Code:
cat logfile | /usr/bin/grep -E -v -f pattern_exclude_file > logfile.new
werden diese Patterns jetzt rausgefiltert.
Nun zu meinem eigentlichen Problem bei dem ich noch ein paar Ideen von euch gebrauchen könnte:
Die Logfiles sehen eigentlich so aus:
2013-04-19[12:41:35(UTC-01:00)]:E:user: ******* S T A R T of Error message *******
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log message called from /view/port/vobs/tt/lib/al_1/al_sig.c: #236 keyword: CORE DUMPED
2013-04-19[12:41:35(UTC-01:00)]:E:user: Pid 1023 Uid 1007 Euid 1007 Gid 1002 Egid 1002 Pset pcname:1312
2013-04-19[12:41:35(UTC-01:00)]:E:user: user_type N language 3 user_name user tty ote locale /
2013-04-19[12:41:35(UTC-01:00)]:E:user: session: "blablabla";object: "blabla"; company number: 10
2013-04-19[12:41:35(UTC-01:00)]:E:user: Errno 0 bdb_errno 0
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log_mesg: core_dumped() signal 11 cwd: '/home/user'
2013-04-19[12:41:35(UTC-01:00)]:E:user: ******* E N D of Error message *******
2013-04-19[12:41:35(UTC-01:00)]:E:user: ******* S T A R T of Error message *******
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log message called from /view/port/vobs/tt/lib/al_1/al_sig.c: #236 keyword: CORE DUMPED
2013-04-19[12:41:35(UTC-01:00)]:E:user: Pid 1023 Uid 1007 Euid 1007 Gid 1002 Egid 1002 Pset pcname:1312
2013-04-19[12:41:35(UTC-01:00)]:E:user: user_type N language 3 user_name user tty ote locale /
2013-04-19[12:41:35(UTC-01:00)]:E:user: session: "blablabla";object: "blabla"; company number: 10
2013-04-19[12:41:35(UTC-01:00)]:E:user: Errno 2 (No such file or directory) bdb_errno 0
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log_mesg: Renamed existing core file '/home/user/core' to '/home/user/core.s002'.
2013-04-19[12:41:35(UTC-01:00)]:E:user: ******* E N D of Error message *******
Ich filtere jetzt im Patternfile gewisse wiederkehrende Header der Fehlermeldungen raus. Somit bekomme ich folgendes Ergebnis:
2013-04-19[12:41:35(UTC-01:00)]:E:user: session: "blablabla";object: "blabla"; company number: 10
2013-04-19[12:41:35(UTC-01:00)]:E:user: Errno 0 bdb_errno 0
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log_mesg: core_dumped() signal 11 cwd: '/home/user'
2013-04-19[12:41:35(UTC-01:00)]:E:user: session: "blablabla";object: "blabla"; company number: 10
2013-04-19[12:41:35(UTC-01:00)]:E:user: Errno 2 (No such file or directory) bdb_errno 0
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log_mesg: Renamed existing core file '/home/user/core' to '/home/user/core.s002'.
SOLLZUSTAND
Eigentlich ist das für mich nur eine Notlösung, denn was ich eigentlich möchte ist Folgendes:
- Nehme den ganzen Logfile
- Unterteile ihn in Teile zwischen "S T A R T of Error message" und "E N D of Error message"
- Wenn in einem Teil ein Exclude- Pattern nicht gefunden wurde
- Gebe den ganzen Teil aus
- Nehme den ganzen Logfile
- Wenn in einer Zeile ein Exclude- Pattern nicht gefunden wurde
- Ermittle alle Zeilen um die gefundene Position von "S T A R T of Error message" bis "E N D of Error message"
- Gebe die gefundenen Zeilen aus
BEISPIEL
Wenn ich alles bis auf die Zeile:
im Patternfile excludieren würde sollte mir der Befehl oder das Script folgendes ausgeben:2013-04-19[12:41:35(UTC-01:00)]:E:user: Log_mesg: Renamed existing core file '/home/user/core' to '/home/user/core.s002'.
2013-04-19[12:41:35(UTC-01:00)]:E:user: ******* S T A R T of Error message *******
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log message called from /view/port/vobs/tt/lib/al_1/al_sig.c: #236 keyword: CORE DUMPED
2013-04-19[12:41:35(UTC-01:00)]:E:user: Pid 1023 Uid 1007 Euid 1007 Gid 1002 Egid 1002 Pset pcname:1312
2013-04-19[12:41:35(UTC-01:00)]:E:user: user_type N language 3 user_name user tty ote locale /
2013-04-19[12:41:35(UTC-01:00)]:E:user: session: "blablabla";object: "blabla"; company number: 10
2013-04-19[12:41:35(UTC-01:00)]:E:user: Errno 2 (No such file or directory) bdb_errno 0
2013-04-19[12:41:35(UTC-01:00)]:E:user: Log_mesg: Renamed existing core file '/home/user/core' to '/home/user/core.s002'.
2013-04-19[12:41:35(UTC-01:00)]:E:user: ******* E N D of Error message *******
Übrigens: ich habe schon nach sowas gesucht und kam auch bis zu folgendem AWK- Statement:
Code:
cat logfile | awk '/S T A R T/, /E N D/'
Aber tiefer in awk oder sonstige Befehle reichen meine Kenntnisse jetzt noch nicht.
Bitte gebt mir mal einen Hinweis wie ich solch ein Konstrukt aufbauen könnte.
Ein Lösungsvorschlag wäre auch in Ordnung ;-)
Schönes Wochenende
Litrax