Shell命令显示给定期间的大多数匹配

时间:2019-01-25 17:56:37

标签: shell server count ip

我想按服务器上的点击显示IP。我发现以下似乎可以做到这一点:

    awk -vDate=`date -d'now-10 minutes' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print $1}'  /usr/local/apache/logs/access_log | sort  |uniq -c |sort -n | tail

显示类似

    3346 123.242.4.51
    14315 123.0.0.1
    35951 123.73.173.170

问题在于它总是显示当天的情况。因此,如果我在上午8点运行它并在晚上8点再次运行它,它将显示相同的内容。但是,如果我第二天运行它,它将发生变化。我认为我在这里找到了正在使用的命令,可能不正确。假设有可能,请有人显示正确的命令吗?

1 个答案:

答案 0 :(得分:0)

这是一些示例日志条目。对于这些条目,脚本将在IP 678.138.147.158上显示3个匹配,在127.0.0.1上显示2个匹配。万一有人注意到,这里使用的大多数IP都是无效IP。

    678.138.147.158 - - [25/Jan/2019:13:43:52 -0500] "GET / HTTP/1.1" 200 163 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
    665.73.173.170 - - [25/Jan/2019:13:44:18 -0500] "GET / HTTP/1.0" 200 163 "-" "check_http/v1.4.16 (nagios-plugins 1.4.16)"
    127.0.0.1 - - [25/Jan/2019:13:45:01 -0500] "GET /whm-server-status HTTP/1.0" 200 50752 "-" "-"
    678.138.147.158 - - [25/Jan/2019:13:45:18 -0500] "GET / HTTP/1.0" 200 163 "-" "check_http/v1.4.16 (nagios-plugins 1.4.16)"
    150.244.199.72 - - [25/Jan/2019:13:45:57 -0500] "GET / HTTP/1.1" 200 163 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
    678.138.147.158 - - [25/Jan/2019:13:46:18 -0500] "GET / HTTP/1.0" 200 163 "-" "check_http/v1.4.16 (nagios-plugins 1.4.16)"
    127.0.0.1 - - [25/Jan/2019:13:47:09 -0500] "GET / HTTP/1.0\n" 400 10087 "-" "-"