Thread Datei nach String durchsuchen und in Datei ausgeben (42 answers)
Opened by QWERTZ7 at 2011-03-22 10:49

Linuxer
 2011-03-25 23:11
#146926 #146926
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
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!

View full thread Datei nach String durchsuchen und in Datei ausgeben