linux 访问日志ip排序,Linux通过日志文件统计IP访问次数排序
假设我的日志文件内容如下:
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访问次数排序相关推荐
- 在linux返回目录并查看,Linux命令(十四) 查看工作目录文件 ls
目录 命令简介 ls 命令是 Linux 下最常用的命令. ls 就是 list 的缩写.默认情况下 ls 命令用来打印出当前目录的清单, 如果 ls 指定其他目录,那么就会显示指定目录里的文件及其文 ...
- bat文件设置dns服务器,.bat文件设置IP、DNS
这几天遇到个烦心事,每次开机之后都要去手动去设置一下IP地址,一大串的数字还是有点麻烦,于是就想写个批处理文件设置IP 注意:在DOS下设置IP时需要管理员权限运行 1.查看机子设置IP需要用到的名字 ...
- linux日志生成速率统计,Linux学习29-awk提取log日志信息,统计日志里面ip访问次数排序...
前言 有一段log日志,需从日志里面分析,统计IP访问次数排序前10名,查看是否有异常攻击. 日志提取 如下日志,这段日志包含的信息内容较多,我们希望提取ip,访问时间,请求方式,访问路径(不带参数) ...
- linux 访客日志ip,shell统计ip访问情况,要求分析访问日志分析。
[题目要求] 有日志 1.log,部分内容如下: 112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com "/se ...
- Python统计网站访问日志log中的IP信息,并排序。。
Python统计网站访问日志log中的IP信息,并排序,打印排名靠前的IP及访问量.示例代码如下: #!/usr/bin/env pythonipdict = {}file = open(" ...
- linux将访问日志切成每天,最简单自动切割 nginx 访问日志示例
网站上线后,没怎么注意过日志,有一天需要查日志时,才发现竟然有 100 多个 G,一个文本文件竟然有 100 多个G,这也太大了. nginx 是一个非常轻量的 web 服务器,体积小.性能高.速度快 ...
- IP记录Linux所有用户操作日志的方法(附脚本)
按时按登录IP记录Linux所有用户操作日志的方法(附脚本) 标签: IP记录,Linux,总结,按时,方法,日志,用户操作,脚本.PS:Linux用户操作记录一般通过命令history来查看历史记录 ...
- Linux部署Tomcat踩的坑以及解决方案【8080无法访问、日志显示XX端口被占用、修改默认端口、无法提供安全连接】
Linux部署Tomcat踩的坑以及解决方案[8080无法访问.日志显示XX端口被占用.修改默认端口.无法提供安全连接] 8080无法访问 解压开压缩包后,执行bin目录下的 startup.sh 后 ...
- 日志处理--高效Linux命令整理
序 在学习使用python处理日志开始阶段,对我阻力最大的莫过于对linux的不熟悉了,有种寸步难行的感觉. 在之后乱学一通之后,发现有点对我颇有益处: 学<鸟哥linux私房菜基础学习篇> ...
最新文章
- java switch语句练习 从键盘输入2个数和一个运算符(+,-,*,/),输出运算结果
- 【Hibernate】映射关系总结
- 【收藏】13个CSS3快速必备开发工具
- AntD 官网样例 InputRef报错原因
- Java多线程并发学习-进阶大纲
- 关于ASP.Net的导入导出(6)
- 微信小程序导入已有项目
- Draco - glTF模型压缩利器
- pandas category数据类型
- stm32核心板可以点亮灯吗_不忘初心牢记使命——自动化科协自行设计开发stm32仿真器...
- android绘制花边view-WaveLineView
- JavaScript window对象之atob()和btoa()
- iOS中开发者账号分类
- esp8266点灯LCD12864心知天气+农历+空气质量ArduinoJson6
- LED驱动芯片TM1668驱动代码
- 为人处事的19个技巧
- 【JavaScript】VUE前端实现微信版录制音频wav格式转化成mp3格式和Base64
- Deep learning for drug repurposing: methods, databases, and applications
- 如何在网络上连接另一台计算机,如何通过网络共享连接到另一台电脑?
- 数据结构——删除x-y之间的元素
热门文章
- 多个html如何套用套一个头部,Vue.js项目中管理每个页面的头部标签的两种方法...
- html文本显示状态代码中,HTML文本显示状态代码中,表示?
- 十二个球称三次C语言编程,十二个球,有一个不知轻重,现有一个天平,称三次,找出此球!...
- 运行时异常与一般异常有何异同_Java修行第015天,异常机制和常用类
- 线程启动语句的顺序是否决定线程的执行次序。_详细分析 Java 中启动线程的正确和错误方式
- centos删除文件夹_等保测评主机安全之centos密码长度
- 解决VS命令提示符 “Setting environment for using Microsoft Visual Studio. 此时不应有“系列错误
- 冠榕智能灯光控制协议分析(node-controller)
- C++11中的右值引用及move语义编程
- python读取文件路径报invalid_关于Python读取文件的路径中斜杠问题