Thread Logfile abarbeiten, brauche Denkanstoß (6 answers)
Opened by FlorianL at 2010-11-19 11:59

Gast FlorianL
 2010-11-19 11:59
#142872 #142872
Hallo!
Ich möchte das Logfile eines Gameservers von einem Script durchlaufen lassen, wenn es auf ein 'Badword' trifft soll es die Zeile ausgeben...

So sieht das Log aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
2010-11-18 22:52:40 [INFO] Sign placed by Shanuson at 335 65 -1638
2010-11-18 22:52:40 [INFO] Line 1 : You are
2010-11-18 22:52:40 [INFO] Line 2 : a
2010-11-18 22:52:40 [INFO] Line 3 : stupid
2010-11-18 22:52:40 [INFO] Line 4 : Asshole
2010-11-18 22:57:45 [INFO] Sign placed by Shanuson at 396 65 -1612
2010-11-18 22:57:45 [INFO] Line 1 : Bridge
2010-11-18 22:57:45 [INFO] Line 2 : Under
2010-11-18 22:57:45 [INFO] Line 3 : Construction
2010-11-18 22:57:45 [INFO] Line 4 : Shanuson


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl
# Minecraft Audit
#   by m1ndgames for
#     Hexagon.de.tf
#############################
use warnings;
use strict;
my $logfilepath = "/minecraft/bin/logs/";
my @logfiles = `ls $logfilepath*.log`;
open(BADWORDS, "<", "badwords.db");


foreach(@logfiles) {
        open(CURRENTLOG, $_) or die $!;
        foreach(<CURRENTLOG>) {
                my $line = $_;
                if ($line =~ /Sign/) {
                        print $line;
                } elsif ($line =~ /Line/) {
                        foreach (<BADWORDS>) {
                                if ($line =~ /$_/) {
                                        print $_;
                                }
                        }
                } elsif ($line =~ /Antigrief/) {
#                       print $line;
                }
        }
}


So, das funktioniert ja auch prima... aber ganz ohne den übeltäter ists ja sinnlos, also meine frage ist: Wie kann ich die Zeile über dem Regex ausgeben lassen, aber nur falls diese auch greift? Ich hab überlegt erstmal alles in ein array zu pushen, falls kein badword folgt lösche ich wieder (Wär aber auch mist wegen den 4 zeilen die ich prüfen muss, oder?), und am schluss lass ich mir das ganze array nochmal anzeigen...

habt ihr ne bessere idee?
Last edited: 2010-11-19 12:12:06 +0100 (CET)

View full thread Logfile abarbeiten, brauche Denkanstoß