前言

有一段log日志,需从日志里面分析,统计IP访问次数排序前10名,查看是否有异常攻击。

日志提取

如下日志,这段日志包含的信息内容较多,我们希望提取ip,访问时间,请求方式,访问路径(不带参数),状态码

123.125.72.61 - - [05/Dec/2018:00:00:02 +0000] "GET /yoyo/artical?locale=en HTTP/1.1" 200 12164 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.032 0.032 .

123.125.72.61 - - [05/Dec/2018:00:00:02 +0000] "GET /index?page=1 HTTP/1.1" 200 16739 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.120 0.120 .

141.1.142.111 - - [05/Dec/2018:00:00:02 +0000] "GET /index?page=61 HTTP/1.1" 200 16739 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.120 0.120 .

141.1.142.131 - - [05/Dec/2018:00:00:02 +0000] "GET /yoyoketang?page=62 HTTP/1.1" 200 16739 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.120 0.120 .

141.1.142.131 - - [05/Dec/2018:00:00:02 +0000] "GET /blog?page=3 HTTP/1.1" 200 16739 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.120 0.120 .

142.22.12.132 - - [05/Dec/2018:00:00:02 +0000] "GET /blog?page=1 HTTP/1.1" 200 16739 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.120 0.120 .

142.22.12.132 - - [05/Dec/2018:00:00:02 +0000] "POST /blog?page=1 HTTP/1.1" 200 16739 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.120 0.120 .

142.22.12.132 - - [05/Dec/2018:00:00:02 +0000] "POST /blog?page=3 HTTP/1.1" 200 16739 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.120 0.120 .

可以使用 awk 对日志内容格式化输出,根据空格格式化输入,第一列是ip,也就是'{print $1}',其它列依次类推

awk '{print $1,$4,$6,$7,$9}' log.txt

[root@VM_0_2_centos ~]# awk '{print $1,$4,$6,$7,$9}' log.txt

123.125.72.61 [05/Dec/2018:00:00:02 "GET /yoyo/artical?locale=en 200

123.125.72.61 [05/Dec/2018:00:00:02 "GET /index?page=1 200

141.1.142.111 [05/Dec/2018:00:00:02 "GET /index?page=61 200

141.1.142.131 [05/Dec/2018:00:00:02 "GET /yoyoketang?page=62 200

141.1.142.131 [05/Dec/2018:00:00:02 "GET /blog?page=3 200

142.22.12.132 [05/Dec/2018:00:00:02 "GET /blog?page=1 200

142.22.12.132 [05/Dec/2018:00:00:02 "POST /blog?page=1 200

142.22.12.132 [05/Dec/2018:00:00:02 "POST /blog?page=1 200

接下来需要去掉多余的[ 和 " 和?后面的参数,可以使用符号继续分割

awk -F '[[, ",?]' '{print $1,$5,$8,$9,$13}' log.txt

[root@VM_0_2_centos ~]# awk -F '[[, ",?]' '{print $1,$5,$8,$9,$13}' log.txt

123.125.72.61 05/Dec/2018:00:00:02 GET /yoyo/artical 200

123.125.72.61 05/Dec/2018:00:00:02 GET /index 200

141.1.142.111 05/Dec/2018:00:00:02 GET /index 200

141.1.142.131 05/Dec/2018:00:00:02 GET /yoyoketang 200

141.1.142.131 05/Dec/2018:00:00:02 GET /blog 200

142.22.12.132 05/Dec/2018:00:00:02 GET /blog 200

142.22.12.132 05/Dec/2018:00:00:02 POST /blog 200

142.22.12.132 05/Dec/2018:00:00:02 POST /blog 200

统计ip次数

统计IP访问次数排序前10名,使用 sort 对内容进行排序,默认是自然顺序排序。head -10 是前十个倒叙

[root@VM_0_2_centos ~]# awk -F '[[, ",?]' '{print $1,$5,$8,$9,$13}' log.txt | sort | uniq -c | sort -k 1 -n -r |head -10

2 142.22.12.132 05/Dec/2018:00:00:02 POST /blog 200

1 142.22.12.132 05/Dec/2018:00:00:02 GET /blog 200

1 141.1.142.131 05/Dec/2018:00:00:02 GET /yoyoketang 200

1 141.1.142.131 05/Dec/2018:00:00:02 GET /blog 200

1 141.1.142.111 05/Dec/2018:00:00:02 GET /index 200

1 123.125.72.61 05/Dec/2018:00:00:02 GET /yoyo/artical 200

1 123.125.72.61 05/Dec/2018:00:00:02 GET /index 200

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) 来进行排序的意思

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

  1. linux 访问日志ip排序,Linux通过日志文件统计IP访问次数排序

    假设我的日志文件内容如下: 218.92.217.53 - - [22/Nov/2017:17:26:27 +0800] "GET /images/rand HTTP/1.0" 2 ...

  2. python读取日志统计ip_使用python脚本实现统计日志文件中的ip访问次数

    使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下 适用的日志格式: 106.45.185.214 - - [06/Aug/2014: ...

  3. 用户IP访问次数统计

    技术源于生活,服务生活 线上地址:https://api.imibi.cn Redis存储 1.使用Redis的0号数据库,数据格式是hash. import redis con = redis.Re ...

  4. linux自动生成mac地址,Linux自动生成MAC地址的多种方法

    Linux自动生成MAC地址的多种方法 Linux下生成MAC地址的方法有很多种,除了常见的shell生成法外,还能通过Perl.ruby等方法来生成MAC地址,下面小编对MAC地址的自动生成方法做了 ...

  5. 统计日志中ip访问次数并排序的三种方法

    1  利用linux中的awk命令 grep "GET aaa.log | awk -F " " '{print $NF}' >d:/test.log 假设日志的最 ...

  6. ip访问次数统计 nginx_Linux分析Nginx日志统计IP访问次数的shell脚本

    平时运维遇到最多的就是nginx的日志分析了,要时常做系统监控,检查IP的访问次数是否有异常,防止恶意访问. 假设我的nginx日志如下: ....... 211.253.43.23 - - [03/ ...

  7. SpringBoot后端统计网站的IP访问次数及地区

    项目是用SpringBoot+Vue实现,前后端分离的,前端是用nginx部署的,虽说可以通过Nginx的日志来统计网站的IP的访问次数,但想在前端用图形化的方式来展示是不太可行的,所以我想着是在Sp ...

  8. linux caffe生成的模型,深度学习之pytorch转caffe转ncnn模型转换(三)

    搭建caffe平台: 先在Linux系统下搭建caffe环境,安装依赖包: sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy- ...

  9. linux下生成guid,在Linux下生成GUID的程序,及编译错误 “uuid/uuid.h: No such file or directory” 的解决办法。...

    在Linux下编写生成GUID的程序,如下 guid.c 文件: #include #include void uuid2string(const uuid_t uu, char* const str ...

最新文章

  1. ubuntu18.04.4 pip3 换源
  2. git设置和取消代理
  3. 《数据中心项目规范(征求意见稿)》
  4. Applese 填数字
  5. Android-完美解决在Activity中触摸返回键onBackPressed不能触发问题
  6. Facebook's New Real-time Messaging System: HBase to Store 135+ Billion Messages a Month
  7. iphone退款申请教程_【揭秘】朋友圈卖的iOS退款、王者荣耀0元撸点券教程
  8. 三星android11推送,三星国行S10系列正式推送One UI 3正式版,基于安卓11打造
  9. Serverless 应用如何管理日志 持久化数据
  10. Black Hat | PE Tree:BlackBerry 发布PE文件开源逆向工具
  11. python字符串的方法和列表的方法_python字符串,列表,字符串,元组,集合的一些方法...
  12. R语言安装包下载和安装
  13. 《大秦帝国》读书笔记
  14. 利用python脚本实现批量添加jira用户功能
  15. 关于物联网你需要知道的一切
  16. 别收藏 Excel 函数大全了!北大硕博生为帮助女朋友,开发了个 ChatExcel,一键处理表格...
  17. 太可怕,有码变高清!AI 一秒还原马赛克?
  18. Quartz定时任务项目中的应用
  19. 王江民故事:38岁开始学计算机 与病毒作斗争
  20. WPF开源项目Newbeecoder.UI库新功能演示

热门文章

  1. 成都Uber优步司机奖励政策(2月1日)
  2. sql 按字段指定值排序
  3. 压缩目录Linux常用的几种文件压缩解压方法
  4. MOSS 2010:Visual Studio 2010开发体验(26)——工作流开发概述
  5. 如何给上传控件上色【HOW TO SET CSS FOR THE CONTROL OF FILEUPLOAD】
  6. 比特币现金支付接入日本便利店
  7. pthread_mutex_lock的thread特性
  8. 深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)
  9. 动手动脑(继承与多态)
  10. Delphi 7 在程序中直接执行SQL脚本文件