Thread Datei nach String durchsuchen und in Datei ausgeben
(42 answers)
Opened by QWERTZ7 at 2011-03-22 10:49
Wozu eval() bemühen?
Es ist ein simples ASCII-Log, dass sich wunderbar parsen lässt. Ein Regex schnappt den Hostnamen hinter "client", ein anderer schnappt die MAC-Adresse hinter "cli" . Beide Ergebnisse lassen sich jeweils einer Variablen zuordnen und dann weiterverarbeiten (sprich überprüfen und in einen Hash ablegen, wenn notwendig): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #! /usr/bin/perl use strict; use warnings; while ( defined( my $line = <DATA> ) ) { # wenn beide Regex zutreffen if ( ( my ( $client ) = $line =~ m/client\s(\S+)/ ) # nach client steht der hostname && ( my ( $mac ) = $line =~ m/cli\s([-\da-fA-F]+)/ ) # nach cli steht die MAC ) { # tu was mit beiden ermittelten Werten print "$client: $mac\n"; } } __DATA__ Wed Mar 23 13:00:28 2011 : Auth: Login OK: [00-11-0A-FA-FB-AA/NOPASSWORD] (from client kgn751 port 31045 cli 00-11-0A-FA-FB-AA) Wed Mar 23 13:01:02 2011 : Auth: Login OK: [00-0B-5D-0B-D6-44/NOPASSWORD] (from client WabeN7-55 port 11031 cli 00-0B-5D-0B-D6-44) Wed Mar 23 13:01:22 2011 : Auth: Login OK: [00-00-85-7B-44-F7/NOPASSWORD] (from client e1-110-west port 36 cli 00-00-85-7B-44-F7) Wed Mar 23 13:01:37 2011 : Auth: Login OK: [00-C4-FF-7F-34-07/NOPASSWORD] (from client e1-111-west port 76 cli 00-C4-FF-7F-34-07) Wed Mar 23 13:05:29 2011 : Auth: Login OK: [08-37-FF-0C-E7-39/NOPASSWORD] (from client e1-140-west port 3 cli 08-37-FF-0C-E7-39) Last edited: 2011-03-25 23:12:44 +0100 (CET) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |