PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Logdatei: doppelte Einträge finden...



Roki
03-05-2016, 13:20
Hallo Allerseits,

ich weiß nicht was besser dafür geeignet ist, um das Ganze auszuwerten, Perl oder Bash. Daher folgende Frage.

Logdatei sieht so aus:
TUE MAY 1 11:45:58 2016 : AUTH: LOGIN OK: [BENUTZER.AA] (FROM CLIENT 192.168.0.0/24 PORT 8 CLI 00-00-00-00-00-AA VIA TLS TUNNEL)
TUE MAY 1 11:45:59 2016 : AUTH: LOGIN OK: [BENUTZER.AA] (FROM CLIENT 192.168.0.0/24 PORT 8 CLI 00-00-00-00-00-BB)
TUE MAY 1 11:46:05 2016 : AUTH: LOGIN OK: [BENUTZER.BB] (FROM CLIENT 192.168.0.0/24 PORT 12 CLI 00-00-00-00-00-CC VIA TLS TUNNEL)
TUE MAY 1 11:46:05 2016 : AUTH: LOGIN OK: [BENUTZER.BB] (FROM CLIENT 192.168.0.0/24 PORT 12 CLI 00-00-00-00-00-CC)

"00-00-00-00-00-AA" /...BB und ...CC am ende, sind MAC Adressen.

Jetzt möchte ich nach Doppeleinträgen (Benutzernamen) suchen, welche jedoch mit unterschiedlichen MAC Adressen vorkommen. Daher habe ich in der ersten Zeile, gleiche Benutzername eingegeben wie in der zweiten(BENUTZER.AA), jedoch eine andere MAC Adresse, diese soll dann ausgegeben werden. Dritte und vierte nicht, weil es sich hierbei um einen Benutzer handelt, mit der gleichen MAC Adresse.

Wie mache ich das am einfachsten bzw. was ist dafür besser geeignet, Perl oder Bash?

Vielen Dank im voraus für Empfehlungen und Tipps.

zst
04-05-2016, 15:14
Hallo,
wenn die Zeit in der Logdatei unwichtig ist, könntest du eine Liste aus Benutzer und MAC-Adresse erstellen, diese sortieren und dann pro Benutzer in einer Schleife prüfen, ob sich die MAC-Adresse ändert.
Per BASH kann ich mir das durchaus vorstellen.
Gruß zst

fork
05-05-2016, 14:22
Ausnahmsweise mal ne fertige Lösung:



cat logfile.txt \
| perl -ne '/\[([^]]+)\].*(([0-9A-F]{2}-){5}[0-9A-F]{2}).*$/;print "$1 $2\n"' \
| sort -k +1 \
| uniq

Roki
07-05-2016, 11:44
Vielen Dank euch beiden! :)

Der Befehl von fork funktioniert super und das auch noch ein Zeiler! Und ich schreibe da viele Zeilen, ohne wirkliche Lösung....! :facepalm:

also so:
cat logfile.txt | perl -ne '/\[([^]]+)\].*(([0-9A-F]{2}-){5}[0-9A-F]{2}).*$/;print "$1 $2\n"' | sort -k +1 | uniq

fork
07-05-2016, 13:14
Das ist nicht schlimm. Das passiert auch mir immer noch - und ist immer wieder spannend, wenn mir jemand so eine schöne Einzeilerlösung zeigt. :)