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.
Perl & Rubyur Perl, Python, Ruby och övrig CGI
3 svar · 217 visningar · startad av reka1
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;
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.
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.
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.