
Ich suche einenschnelles SkriptDadurch wird ein großes Mail.log analysiert und der Teil zurückgegebenzwischen zwei angegebenen Zeitstempeln. Ich möchte es auf allen meinen Mailservern ausführen und die relevanten Protokollteile zur weiteren Analyse an einen zentralen Ort kopieren lassen.
Ich habe etwas in Bash geschrieben, das funktioniert, aber langsam ist.
Kennt jemandalles, was bereits existiertum dies zu erreichen – oder muss ich Perl lernen und mir selbst etwas ausdenken?
(Ich stelle das nicht auf SO, da ich noch nicht an dem Punkt bin, an dem ichschreibenbeliebiger Code – suche nur nach etwas, das jemand anderes bereits verwendet)
Antwort1
Ich liebe awk :)
Für meine Protokolle, die im Format vorliegen:
Jul 14 12:49:10 xxxxxx sendmail[31337]: ...........
Ich würde ... benutzen:
awk '$3 >= "12:00:00" && $3 <= "13:00:00" {print;}' < /var/log/maillog
Vermutlich kann man das bei Bedarf anpassen, wenn man beispielsweise nicht tageweise Holz spaltet.
Bonus:
Apache-Format, das ich zufällig noch herumliegen habe:
xxx.xxx.xxx.xxx - - [01/Jul/2009:03:06:24 -0400] "GET /favicon.ico HTTP/1.1" 200 3638
awk '$4 >= "[01/Jul/2009:03:00:00" && $4 <= "[01/Jul/2009:04:00:00" {print;}' < access_log
Antwort2
Für einen bestimmten Tagesbereich und zum Drucken > Ausgabedatei
(Ich kann keinen Kommentar in die obige Antwort einfügen, sonst hätte ich das getan)
HTH
awk '$2 >= "21" && $3 >= "09:00:00" && $2 >= "21" && $3 <= "11:00:10" {print > "m_range.log";}' < /var/log/m.log
cat m_range.log
...
Nov 21 09:00:17 mail postfix/qmgr[1694]: 1C50D276524A: from=<[email protected]>, size=2378, nrcpt=1 (queue active)
...