Thread Verständisfrage Array! Logfile! (14 answers)
Opened by Alexander at 2012-04-14 16:01

topeg
 2012-04-15 12:17
#157500 #157500
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Das ist eindeutig von einer Website geladen, und der Konverter hat das Format versaut. Alle Zeilen in dem ein Referer drin ist, der als Link erkannt werden kann, wird die Zeile zerstört. Das kann man wieder rückgängig machen:

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
#!/usr/bin/perl
use strict;
use warnings;
use Date::Parse;

my $file='log.txt';

open(my $fh, '<', $file) or die("Error open $file ($!)\n");

while(my $line=<$fh>)
{
  chomp($line);
  $line=~s/^<pre><p>//;
  $line=~s!</p></pre>$!!;
  if($line=~s!<a href=".+?" target="_blank">(.+?)</a>!$1!g)
  { $line=~s/;;/;/g; }
  $line=~s!&quot;!"!g;
  $line=~s!&amp;!&!g;

  # bereinigte Zeile
  print "$line\n";
}
close($fh);

Das muss aber nicht immer funktionieren. Besser wäre es wenn du dir das richtige Logfile holen würdest, dazu sollte es einen Download Link auf der Admin-Oberfläche geben.

Wenn man wider ein ordentliches Format hat kann man es auch vernünftig parsen:

Code (perl): (dl )
1
2
3
4
5
6
if($line=~/(\d+\.\d+\.\d+\.\d+) - - \[(.+?)\] "(.+?)" (\d+) (\d+|-) "(.+?)" "(.+?)"$/)
{
  my ($ip,$date,$request,$status,$size,$referer,$useragent)=($1,$2,$3,$4,$5,$6,$7);

  # mach was mit den Werten.
}

View full thread Verständisfrage Array! Logfile!