有什么方法可以实时查看到我的服务器的连接以及通过哪些域?
无需检查 access.log 文件,我愿意在 shell 中运行监视器。
Ubuntu 10 Web 服务器:lighttpd
谢谢
access.log 中的样例行
::ffff:000.00.00.000 www.domain.com - [10/Nov/2010:12:42:49 +0100] "GET / HTTP/1.1" 200 295 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10"
答案1
有一个名为的包iptraf
,它将向您显示与服务器的连接。
您可以通过以下方式安装它:sudo apt-get install iptraf
Access.log 方法
您还可以使用以下命令从 access.log 中提取信息
tail -f access.log | awk '{print $1 "\t" $2}'
在我的实例中,这列出了 UA 提供的远程 IP 和 HTTP 1.1 主机名。
命令说明
让我们简单看一下我上面显示的命令:
实际上,这是两个名为tail
和的命令awk
。tail
通常会输出文件的最后 10 行,但通过参数,-f
我们要求它继续查看文件并在将新行写入文件时打印它们。
管道(|
)是一个众所周知的角色,因为它使用一个程序的输出(即tail
)作为另一个程序的输入(即awk
)。
最后,第二个命令awk '{print $1 "\t" $2}'
从 tail 获取输入,并将输出限制为我们需要的列。(在我的示例中,这些是前两列,因此我使用了$1
和$2
。如果您的 access.log 使用其他列顺序,您可能需要相应地更改数字。
这将生成类似于此的实时列表:
92.17.166.190--pacey.me
92.17.166.191--pacey.me
92.17.166.192--anotherdomain.com
92.17.166.193--anotherdomain.com
关于你的问题
我尝试使用以下命令重现您遇到的错误。
echo ::ffff:000.00.00.000 www.domain.com - [10/Nov/2010:12:42:49 +0100] "GET / HTTP/1.1" 200 295 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10" | awk '{print $1 "\t" $2}'
但即使如此,它对我来说还是有用的:
::ffff:000.00.00.000 www.domain.com
答案2
尝试 topvhost
答案3
由于日志格式与 Apache 几乎相同,阿帕奇可能对你有用。
它在 Ubuntu 软件包存储库中可用,因此sudo apt-get install apachetop
应该可以立即安装它。
用法:apachetop -f /path/to/your/access.log