日志文件行
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
在 logview 文件中我有
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);
输出是
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
由于空格而缺少完整的用户代理
Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
将 LIMIT 参数添加到
split()
调用中。字段有 5 个变量,因此 LIMIT 为 5:前四个以空格分隔的字段将像以前一样 进入
$date
、$user
、$host
和。将接收该行的其余部分,而不仅仅是下一个空格字符之前的部分。$page
$browser
请参阅Perldoc 页面中的 split()以获取完整的详细信息和示例。
去找配置 Web 服务器的人,告诉他们修复它。说真的。日志文件有标准格式(“组合”,最初来自 Apache,可能是最有用的),设计为机器可读。否则,您将不断重新发明相同的流程/无法使用现成的工具进行监控/报告。