[Postfixbuch-users] [OT] Filtern von IP-Adressen aus Logdateien

Christian Boltz postfixbuch at cboltz.de
Fr Okt 10 21:59:09 CEST 2008


Hallo Sebastian, hallo Leute,

Am Freitag, 10. Oktober 2008 schrieb Sebastian Deiszner:
> ich bin jetzt endlich fündig geworden - ausfiltern von allen
> Mailadressen welche ein reject erzeugt haben.
>
> die folgende Zeile erzeugt aber:
>
> cat /var/log/mail.log | grep reject | grep deiszner.eu |     

An dieser Stelle bekommst Du erstmal einen useless use of cat-Award - 
grep kann selbst in Dateien lesen.

Außerdem ist ein useless use of grep-Award fällig - mehrere grep 
hintereinander lassen sich üblicherweise durch Verkettung der 
Suchbegriffe (grep "reject.*deiszner.eu") zusammenfassen.

So, bevor Du vor lauter Medaillen nicht mehr laufen kannst, kommen wir 
zum eigentlichen Problem ;-)

> grep -Eo [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ /var/log/mail.log

Ähm, Du hast die RegEx wirklich _ohne_ Anführungszeichen im Script 
stehen? Dann schluckt die Bash die Backslashes und grep sieht nur noch 
den Punkt (aka "irgendein Zeichen").

Und was mir gerade noch auffällt: Den letzten grep fütterst Du via Pipe 
aus den vorangegangenen grep-Aufrufen und außerdem noch via Parameter 
direkt aus /var/log/mail.
Gerade getestet: In einem solchen Fall wird _nur_ die angegebene Datei 
ausgewertet, aber nicht die Daten aus der Pipe.

Setze Anführungszeichen (am Besten einfache, also '...') um die RegEx 
und Dein Problem ist gelöst. Und bei der Gelegenheit kannst Du gleich 
die ersten zwei grep-Aufrufe zu einem zusammenfassen.


Gruß

Christian Boltz
-- 
Wir sind vom LinuxTag e.V., Widerstand ist zwecklos.
Sie werden assimiliert.
[Henning Heinold - LinuxTag fortune]



Mehr Informationen über die Mailingliste Postfixbuch-users