今天某时间段服务出现异常,需要统计某段时间内请求最多的ip,查看是否有人添加了服务,学习了运维大牛,并且在此记录分享。

命令:

1
2
#按时间段统计
sed -n '/10:35:00/,/11:11:00/p' access.log | awk '{print $1}'|sort|uniq -c|sort -n -r |head -n 20

日志格式:

1
10.90.11.10 - 5000 - [27/Nov/2017:17:45:55 +0800]
  • awk ‘ { print $1} ‘ : 取日志每行第一列。也即是10.90.11.10。
  • sort : 对ip部分进行排序,如果ip后跟着端口(10.90.11.10:8080),则sort 替换成 cut -d : -f 1 | sort
  • uniq -c : 打印每重复行出现的次数,并去掉重复。
  • sort -n -r :按照重复行出现的次序倒序排序。
  • head -n 20 : 取前20位ip。

完结,希望能帮助你!