Thread Logfile abarbeiten, brauche Denkanstoß
(6 answers)
Opened by FlorianL at 2010-11-19 11:59
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 2010-11-18 22:52:40 [INFO] Sign placed by Shanuson at 335 65 -1638 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) |