【发布时间】:2015-02-09 01:20:15
【问题描述】:
运行:CentOS 6
我正在尝试按 IP 计算对 PHP 登录页面进行的所有 POST 尝试的计数、总数和排序。基本上,apache 日志将如下所示:
127.0.0.1 - - [10/Dec/2014:12:35:51 -0500] "POST /wp-login.php HTTP/1.0" 200 6520 "-" "-"
127.0.0.1 - - [10/Dec/2014:12:35:51 -0500] "POST /wp-login.php HTTP/1.0" 200 6520 "-" "-"
127.0.0.2 - - [10/Dec/2014:12:35:51 -0500] "POST /wp-login.php HTTP/1.0" 200 6520 "-" "-"
我希望能够发出一个命令,输出每个 IP 尝试 POST 到 /wp-login.php 页面的次数的结果。因此,对于上述 3 条日志,我想发出一个返回类似以下内容的命令:
2 127.0.0.1 /wp-login.php
1 127.0.0.2 /wp-login.php
这告诉我每个唯一 IP 向该特定页面发送 POST 的次数,并且从高到低排序(反之亦然)。
到目前为止,我想出的基本上是打印我需要的结果,但不会“计算”或“排序”它们。这就是我所拥有的:
grep "POST" /var/log/httpd/domains/domain.com.log | grep wp-login.php | awk '{print $1,substr($7,1)}
该命令基本上打印第一列和第七列(截断)。从我一直在阅读和尝试的内容来看,我相信我需要使用 unique -c 和/或 sort 命令,但我似乎无法让它按我的需要工作,因为我假设“日期”正在抛出关闭每个日志的唯一性,所以我得到每个日期每个 IP 的计数。
如果有人能帮我解决这个问题,将不胜感激!
【问题讨论】:
标签: sorting search awk grep cut