假设我的日志文件内容如下:

218.92.217.53 - - [22/Nov/2017:17:26:27 +0800] "GET /images/rand HTTP/1.0" 200 1785 "https://www.baidu.com/index.shtml" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)" "sso.baidu.com" 36.105.87.151 4000

182.118.27.97 - - [22/Nov/2017:17:26:28 +0800] "GET /images/rand HTTP/1.0" 200 1588 "https://www.baidu.com/index.shtml" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Tablet PC 2.0; .NET4.0C; InfoPath.3; .NET4.0E; CIBA)" "sso.baidu.com" 123.158.3.19 4000

218.92.217.53 - - [22/Nov/2017:17:26:28 +0800] "GET /images/rand HTTP/1.0" 200 1668 "https://www.baidu.com/index.shtml" "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)" "sso.baidu.com" 115.153.175.138 3000

218.92.217.51 - - [22/Nov/2017:17:26:28 +0800] "GET /images/rand HTTP/1.0" 200 1501 "https://www.baidu.com/index.shtml" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)" "sso.baidu.com" 125.67.186.42 3000

218.92.217.53 - - [22/Nov/2017:17:26:28 +0800] "GET /images/rand HTTP/1.0" 200 1720 "https://www.baidu.com/index.shtml" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)" "sso.baidu.com" 27.17.66.35 3000

182.118.27.97 - - [22/Nov/2017:17:26:28 +0800] "GET /images/rand HTTP/1.0" 200 1718 "https://www.baidu.com/index.shtml" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0)" "sso.baidu.com" 113.0.64.155 5000

218.92.217.51 - - [22/Nov/2017:17:26:28 +0800] "GET /images/rand HTTP/1.0" 200 1762 "https://www.baidu.com/index.shtml" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)" "sso.baidu.com" 183.8.202.141 3000

其中倒数第二个字段是客户端真实IP地址,现在我想根据客户IP统计访问次数,看看是否有异常攻击。就可以写一个shell命令如下:

cat logs/baidu.access.log | awk '{print $(NF-1)}' | sort | uniq -c | sort -k 1 -n -r|head -10

解释一下上面的命令,

cat logs/baidu.access.log就是输出我要统计的日志。

awk后面跟一个指令,awk '{print $(NF-1)}'就是打印出日志内容的第几列。$1就是第一列,$(NF)就是总列数,那么我要根据倒数第二列统计,就是$(NF-1)。

sort就是对内容进行排序,默认是自然顺序排序。

uniq指令用于排重,而是只适用于相邻两行相同的情况。所以一般结合sort使用。即先sort排序再排重。

uniq -u是只显示唯一的记录行。uniq -c是显示有重复记录的情况。

sort -k 1 -n -r这个指令,参看下面sort指令参数的详细说明

sort选项与参数:

-f  :忽略大小写的差异,例如 A 与 a 视为编码相同;

-b  :忽略最前面的空格符部分;

-M  :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;

-n  :使用『纯数字』进行排序(默认是以文字型态来排序的);

-r  :反向排序;

-u  :就是 uniq ,相同的数据中,仅出现一行代表;

-t  :分隔符,默认是用 [tab] 键来分隔;

-k  :以哪个区间 (field) 来进行排序的意思

所以 sort -k 1 -n -r 指令的意思就是对第一列按照纯数字逆序排序。

这个纯数字是哪里来的呢?是uniq -c来的,原来剩下一列就是IP了,当执行uniq -c指令时,它会统计重复记录的次数并把这次数显示在第一列。所以现在有两列了,第一列是重复次数,第二列是IP。所以这里是按照重复次数排序。

head -10这个不用说了吧,显示前10行。

同理,如果你要统计URL的访问情况就awk url那一列就行了。

linux 访问日志ip排序,Linux通过日志文件统计IP访问次数排序相关推荐

  1. 在linux返回目录并查看,Linux命令(十四) 查看工作目录文件 ls

    目录 命令简介 ls 命令是 Linux 下最常用的命令. ls 就是 list 的缩写.默认情况下 ls 命令用来打印出当前目录的清单, 如果 ls 指定其他目录,那么就会显示指定目录里的文件及其文 ...

  2. bat文件设置dns服务器,.bat文件设置IP、DNS

    这几天遇到个烦心事,每次开机之后都要去手动去设置一下IP地址,一大串的数字还是有点麻烦,于是就想写个批处理文件设置IP 注意:在DOS下设置IP时需要管理员权限运行 1.查看机子设置IP需要用到的名字 ...

  3. linux日志生成速率统计,Linux学习29-awk提取log日志信息,统计日志里面ip访问次数排序...

    前言 有一段log日志,需从日志里面分析,统计IP访问次数排序前10名,查看是否有异常攻击. 日志提取 如下日志,这段日志包含的信息内容较多,我们希望提取ip,访问时间,请求方式,访问路径(不带参数) ...

  4. linux 访客日志ip,shell统计ip访问情况,要求分析访问日志分析。

    [题目要求] 有日志 1.log,部分内容如下: 112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com "/se ...

  5. Python统计网站访问日志log中的IP信息,并排序。。

    Python统计网站访问日志log中的IP信息,并排序,打印排名靠前的IP及访问量.示例代码如下: #!/usr/bin/env pythonipdict = {}file = open(" ...

  6. linux将访问日志切成每天,最简单自动切割 nginx 访问日志示例

    网站上线后,没怎么注意过日志,有一天需要查日志时,才发现竟然有 100 多个 G,一个文本文件竟然有 100 多个G,这也太大了. nginx 是一个非常轻量的 web 服务器,体积小.性能高.速度快 ...

  7. IP记录Linux所有用户操作日志的方法(附脚本)

    按时按登录IP记录Linux所有用户操作日志的方法(附脚本) 标签: IP记录,Linux,总结,按时,方法,日志,用户操作,脚本.PS:Linux用户操作记录一般通过命令history来查看历史记录 ...

  8. Linux部署Tomcat踩的坑以及解决方案【8080无法访问、日志显示XX端口被占用、修改默认端口、无法提供安全连接】

    Linux部署Tomcat踩的坑以及解决方案[8080无法访问.日志显示XX端口被占用.修改默认端口.无法提供安全连接] 8080无法访问 解压开压缩包后,执行bin目录下的 startup.sh 后 ...

  9. 日志处理--高效Linux命令整理

    序 在学习使用python处理日志开始阶段,对我阻力最大的莫过于对linux的不熟悉了,有种寸步难行的感觉. 在之后乱学一通之后,发现有点对我颇有益处: 学<鸟哥linux私房菜基础学习篇> ...

最新文章

  1. java switch语句练习 从键盘输入2个数和一个运算符(+,-,*,/),输出运算结果
  2. 【Hibernate】映射关系总结
  3. 【收藏】13个CSS3快速必备开发工具
  4. AntD 官网样例 InputRef报错原因
  5. Java多线程并发学习-进阶大纲
  6. 关于ASP.Net的导入导出(6)
  7. 微信小程序导入已有项目
  8. Draco - glTF模型压缩利器
  9. pandas category数据类型
  10. stm32核心板可以点亮灯吗_不忘初心牢记使命——自动化科协自行设计开发stm32仿真器...
  11. android绘制花边view-WaveLineView
  12. JavaScript window对象之atob()和btoa()
  13. iOS中开发者账号分类
  14. esp8266点灯LCD12864心知天气+农历+空气质量ArduinoJson6
  15. LED驱动芯片TM1668驱动代码
  16. 为人处事的19个技巧
  17. 【JavaScript】VUE前端实现微信版录制音频wav格式转化成mp3格式和Base64
  18. Deep learning for drug repurposing: methods, databases, and applications
  19. 如何在网络上连接另一台计算机,如何通过网络共享连接到另一台电脑?
  20. 数据结构——删除x-y之间的元素

热门文章

  1. 多个html如何套用套一个头部,Vue.js项目中管理每个页面的头部标签的两种方法...
  2. html文本显示状态代码中,HTML文本显示状态代码中,表示?
  3. 十二个球称三次C语言编程,十二个球,有一个不知轻重,现有一个天平,称三次,找出此球!...
  4. 运行时异常与一般异常有何异同_Java修行第015天,异常机制和常用类
  5. 线程启动语句的顺序是否决定线程的执行次序。_详细分析 Java 中启动线程的正确和错误方式
  6. centos删除文件夹_等保测评主机安全之centos密码长度
  7. 解决VS命令提示符 “Setting environment for using Microsoft Visual Studio. 此时不应有“系列错误
  8. 冠榕智能灯光控制协议分析(node-controller)
  9. C++11中的右值引用及move语义编程
  10. python读取文件路径报invalid_关于Python读取文件的路径中斜杠问题