PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Access Log



Buck76
23.10.03, 23:02
Hallo zusammen,

folgendes Problem: Hin und wieder habe ich einen User auf unserem Webserver, den ich gerne etwas "genauer" beobachten würde. Dieser User erscheint im Log einmal mit einer eindeutigen festen IP / DNS Name aus seinem Büro und einmal mit dynamischer IP von mcbone.net aber mit einer Browser/Betriebssystems/IE Versions/Eingangsseite, die eindeutig ist. So sehen die beiden Einträge ungefähr aus:

Büro:

customer-XYZ.net - - [23/Oct/2003:19:52:44 +0200] "GET / HTTP/1.0" 304 - "-" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; OTCDv1.4)"

Privat:

sgt2-t6-1.mcbone.net - - [23/Oct/2003:00:17:00 +0200] "GET /index_800.htm HTTP/1.0" 200 8838 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; QXW03418)"

Nun möchte ich den vorhandenen Webalizer oder ein anderes Tool oder Script dazu bringen, nach genau diesen beiden Einträgen zu suchen und diese auszuwerten.

Also:

Alle Logeinträge mit customer-XYZ.net ODER alle Einträge mit index_800.htm UND Windows NT 4.0 UND MSIE 6.0 UND mcbone.net

Wie realisier ich das am besten??

Gruss Thomas

michael.sprick
24.10.03, 02:09
schreib doch ein kleines Perlscript das die Datei einliest, zeilenweise durchgeht und mittels regulärem Ausdruck nach Deinen Schlagwörtern sucht....
Wenn es einen patternmatch gibt - gibst Du die Zeile aus... oder schön schick als HTML.

Liberace
24.10.03, 07:35
grep customer-XYZ.n1et test >ergebnis|| grep index_800.htm test|grep "Windows NT 4.0" test |grep "MSIE 6.0" test| grep mcbone.net test >ergebnis

Dann hoert er allerdings auf wenn die erste Bedingung erfuellt ist, sprich, wenn er einen Log Eintrrag mit Costomer-XYZ gefunden hat. Ansonsten beides trennen und getrennt danach greppen.

Gruss
Liberace

Buck76
24.10.03, 11:54
Gibts so was denn nicht schon fertig ???:p

michael.sprick
24.10.03, 12:29
da steckt doch nix hinter....
um an der Konsole das ganze zu beobachten würde schon so ein Miniscript reichen....
ein komplexerer GREP tuts auch...



#!/usr/bin/perl -w

use strict;

my $logfile="Access_log";
my $pattern1="customer-XYZ";
my $pattern2="mcbone.net";
my $pattern3="index_800.htm";
my $pattern4="Windows NT 4.0";

open(FH,$logfile);
my @logs=<FH>;
close(FH);

foreach my $zeile (@logs)
{
chomp($zeile);
if(($zeile=~m/(.*)$pattern1(.*)/gi) || ($zeile=~m/(.*)$pattern2(.*)$pattern3(.*)$pattern4(.*)/gi) )
{
print $zeile."\n";
}
}




wenn Du das ganze jetzt auch noch schön haben willst, kannst Du ein CGI Script draus machen, die treffer auseinander split()´en und schick in einer HTML Tabelle ausgeben...

Buck76
24.10.03, 12:35
Endgeil! Danke... Bin nicht so der scripter... wäre da nie drauf gekommen ;) Ne diese Ansicht ist zunächst völlig ausreichend *g*...