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那一列就行了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统自动备份脚本,供参考的Linux系统中自动执行分段备份脚本

供参考的Linux系统中自动执行分段备份脚本发布时间:2014-04-21 15:49:00来源:红联作者:tioced以下脚本仅做学习参考,需加到/etc/crontab文件,每天执行一次的脚本自动执行分段备份/www/users下的网页文件夹。[code]#!/usr/bin/perl$all_day date;chdir &…

linux+last命令菜鸟,Linux基本命令。。。菜鸟保留

以下命令都是以root身份输入的1.从图形界面进入问文本界面:init 32.从文本界面进入图形界面:startx3.从普通用户进入root用户:su4.进入文件夹:cd /文件路径5.返回上一个文件夹:cd ..6.查看当前位置的文件以及文件夹&am…

嵌入式linux tftp rpm,嵌入式linux的tftp配置

tftp是用来下载远程文件的最简单网络协议,它其于UDP协议而实现。嵌入式linux的 tftp开发环境包括两个方面:一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。因为u- boot本身内置支持tftp-client,所以嵌…

oom linux 导致ssh,Linux OOM

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?某个机器看到一条日志:Out of Memory: Kill process xxx (xxx) score 707 or sacrifice child并且syslog, ssh等进程都被kill掉了.简单了解了下OOM(Out of Memory)…

linux c 禁止对外通信,Linux C套接字:在recv调用时被阻止

在我的应用程序中,我为简单的http服务器创建了一个线程,然后从我的应用程序中尝试连接到http服务器,但是在recv调用中控件被阻止/挂起.但是,如果尝试使用linux GET命令连接到应用程序的http服务器,则我将成功连接到http服务器.据我对谷歌搜索的了解,我发现这不是正确的方法.但是…

linux 深度v15,[转载]深度Linux发布 V15.9

新增的功能多种手势,轻触即发,针对支持触摸屏设备,支持单击、双击、唤出右键菜单、上下滑动等多种触摸屏手势。搭配屏幕键盘,让您随心所欲,手指点到即得到。随机应变,识变从宜,推出智能镜像源概…

linux arch 包管理,Archlinux使用包管理方式安装MyEclipse

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼PKGBUILD:# Maintainer: alex-no1 # Contributor: alex-no1 pkgnamemyeclipse_realnameeclipsepkgver11.0.1_internal_pkgver3.8.2pkgrel1_date201301310800pkgdesc"An IDE for Java and other languages - 3.8 - simultaneou…

c语言程序位置式pid算法,增量式与位置式PID算法(C语言实现与电机控制项目)...

4.2核心代码/**************************************************************************函数功能:增量PI控制器入口参数:编码器测量值,目标速度返回 值:电机PWM根据增量式离散PID公式pwmKp[e(k)-e(k-1)]Ki*e(k)Kd[e(k)-2e(k-…

c语言编写modbus程序,C语言编写modbus协议

《C语言编写modbus协议》由会员分享,可在线阅读,更多相关《C语言编写modbus协议(23页珍藏版)》请在人人文库网上搜索。1、include / 字地址 0 - 255 (只取低 8位) / 位地址 0 - 255 (只取低 8位)/* CRC 高位字节值表 */ const uint8 code auchCRCHi 0x0…

c语言bfs程序讲解,面试算法--二叉树DFS/BFS实现(C语言)

深度优先搜索算法(Depth First Search)DFS是搜索算法的一种。它沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还…

c语言 子进程,子Shell和子进程

Shell 中有很多方法产生子进程,比如以新进程的方式运行 Shell 脚本,使用组命令、管道、命令替换等,但是这些子进程是有区别的。子进程的概念是由父进程的概念引申而来的。在 Linux 系统中,系统运行的应用程序几乎都是从 init(pid为…

学C语言办公本和游戏本,为什么不建议买游戏本?入手前须知,别只看中游戏...

原标题:为什么不建议买游戏本?入手前须知,别只看中游戏作为一名游戏本用户,我自己在用的游戏本已经用了四五年的时间了,从最初的大学生到毕业工作2年时间,这一游戏本给我带来了不少麻烦。最大的麻烦就是“笨…

LL1文法的判别c语言,编译原理实验七:LL1文法的判断

《编译原理实验七:LL1文法的判断》由会员分享,可在线阅读,更多相关《编译原理实验七:LL1文法的判断(11页珍藏版)》请在人人文库网上搜索。1、实验七:LL(1)文法的判断 一:要求输入:任意的上下文无…

如何用c语言倒序输出字母,菜鸟求助-如何用指针法将一串字符按单词的倒序输出?如:i love yo...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include void fun (char *ch1, char *ch2){int i, n(0), k;int length;bool judge(true);for (length 0; *(ch1 length) ! \0; length );// 计算ch1长度for (i length - 1; i > 0; i --){if (*(ch1 (length - 1))…

AVR单片机计算器C语言源程序,AVR单片机简单计算器的Proteus仿真实现+源码

#include "mega16.h"#include "1602.h"#include "key.h"float k1,k2; //记录最终输入运算的两个数uint one,two,three,four; //记录每次输入的数字uint flag; //计数标志位uint flag1,flag2; //第一个数 第二…

android上传图片文件至c 服务器,Android 史上最优雅的实现文件上传、下载及进度的监听...

本文已授权「刘望舒」微信公众号独家原创发布前言本文将直接使用RxHttp库实现文件上传、下载、断点下载、进度的监听,不对RxHttp做过多讲解,如果对RxHttp不了解,请移步本文目的在于让更多的读者知道RxHttp库,如果您已阅读上面4篇文…

Android中http断点下载,Android HttpURLConnection断点下载(单线程)

HttpCilent 跟 HttpURLConnection 是安卓原生的用来实现http请求的类:Android 6.0之后取消了HttpClient,不支持跟新 ,今天小编使用的是HttpURLConnection :直接上代码:URL url null;BufferedInputStream bin null;Ht…

Android ui 单元测试 覆盖率,Android单元测试—UI测试(Espresso)

前言我们先回顾一下,在上一篇博客中,主要分享了Android单元测试的逻辑测试部分。接下来,我们重点讲解Android单元测试的UI测试部分!何为UI测试呢?就是对用户界面的交互元素进行测试,如TextView、ImageView&…

android shape 圆角百分比,Android shape显示圆角问题

当需要定义一个圆角效果,当在ADT中预览,没有有效果时,只要运行就可以了!xmlns:Android"http://schemas.android.com/apk/res/android">android:state_pressed"true">android:startColor"#ff8c00"android:endColor"#FFFFFF…

Android png模拟svg,Android 中使用svg图片

1. svg认识SVG:android5.0出现,w3c推出使用xml 描述二维图形语言,矢量图,放大缩小无影响为什么用svg,现在手机的短板是内存,不是cpu,svg通过cpu计算,png占用内存Android上对svg进行阉割,使用Vector Drawable对svg支持,…