linha do arquivo de log
4/10/2024--06:00pm guest 192.168.1.2 https://nixnut.nz/home/accounts/hosting.cgi?action=getonline Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
no arquivo logview eu tenho
open (FILE, "tail -$form{'howmany'} $file | tail -$form{'howmany'} |") or die "Opening $file: $!";
while (<FILE>) {
chomp;
s/^\"//;
s/\"$//;
my ($date, $user, $host, $page, $browser) = split(' ', $_);
print "<tr bgcolor=black>";
print "<td bgcolor=white align=left valign=top>$font $date</td>";
print "<td bgcolor=white align=left valign=top><a href=http://nixnut.nz/$user target=_blank>$font $user</a></td>";
print "<td bgcolor=white align=left valign=top>$font <a href=https://www.iptolocation.io/ip-lookup/$host target=_blank>$host</a></td>";
print "<td bgcolor=white align=left valign=top>$font <a href=http://$host target=_blank>$host</a></td>";
print "<td bgcolor=white align=left valign=top><a href=$page target=_blank>$font $page</a></td>";
print "<td bgcolor=white align=left valign=top>$font $browser</td>";
print "</tr>\n";
}
close (FILE);
a saída é
4/10/2024--06:00pm guest 192.168.1.2 192.168.1.2 https://nixnut.nz/home/accounts/hosting.cgi?action=getonline Mozilla/5.0
faltando o useragent completo devido a espaços
Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Adicione o argumento LIMIT à
split()
chamada. Você tem cinco variáveis para campos, então o LIMIT é 5:Os quatro primeiros campos delimitados por espaços irão para
$date
,$user
,$host
, e$page
, como antes.$browser
receberão o restante da linha em vez de apenas a parte antes do próximo caractere de espaço.Veja a página Perldoc para split() para detalhes completos e exemplos.
Vá encontrar quem configurou o servidor web e diga a eles para consertar. Sério. Existem formatos padrão para arquivos de log ("combinado", originalmente do Apache, é provavelmente o mais útil) que são projetados para serem legíveis por máquina. Você estará constantemente reinventando os mesmos processos / incapaz de usar ferramentas prontas para monitoramento / relatórios de outra forma.