webForumDet fria alternativet

läsa loggen

3 svar · 217 visningar · startad av reka1

reka1Medlem sedan sep. 2001662 inlägg
#1

Jag håller på att försöka skapa ett perl-skript som ska hämta ip-nummer från logfilen till Apache.
Den ska också filtrera bort de älsta ip-numren ifall samma ip dyker upp flera gånger i rad.

Men som det ser ut nu så skriver den inte ut ett smack, det händer ingenting när jag kör programmet.
Nån som ser vad problemet ligger?

#!/usr/bin/perl
open (LOG, "/usr/local/apache/log/access_log");

while ($logline = LOG) {

	$logline = /^(\[.0-9\]+)/;
	$ip = $1;

		if ($ip != $previp) {
			print "$ip\\n";
		}
	$previp = $ip;
}

close (LOG);
exit;

JojoxxMedlem sedan juni 20004 306 inlägg
#2

Du har glömt <> runt LOG i while ($logline = <LOG>) { och måsvingen i $logline =~ /^([.0-9]+)/;

Sen kan du kolla så att du har läsrättigheter till loggfilen och att IP't ligger först på varje rad.

reka1Medlem sedan sep. 2001662 inlägg
#3

Tackar för svar! Dessvärre blev det ingen skillnad efter dina förändringar.

Och logfilen har 777 nu under utvecklingsfasen o den är inte tom.

Som sagt så ska man se vilket ip-nummer som läst webbplatsen samt det datum det skett. Om flera anrop till sidan skett vid samma tidpunkt från samma ip-nummer ska bara det första anropet visas i sammanställningen.

JojoxxMedlem sedan juni 20004 306 inlägg
#4

Har du konfigurerat Apache så att ip't ligger först i varje rad? "^" i ditt regexp talar om detta. Sen bör du byta ut "!=" (numerically not equal" till "ne" (stringwise not equal). Annars fungerar din kod när jag kör den.

128 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
125 ms — hämta tråd, inlägg och bilagor (db)