使用awk来统计网站502的次数

回复 收藏
本帖最后由 lyhabc 于 2016-1-16 00:16 编辑

awk '/ 502 /'  /usr/local/nginx/logs/www.80ops.cn.log|awk '{print $1}'|sort |uniq -c
先统计502的行,再只显示第一行,然后统计行数

awk '/ 200 /'  /usr/local/nginx/logs/www.80ops.cn.log|awk '{print $1}'|sort |uniq -c
统计来源ip的访问次数,如果某ip一天访问次数过多,例如一天十万次,可以封ip
其实很多时候,我们不需要很清楚awk语法,例如 awk -F ' '  '$1==XX  {print xx}'  xx.txt
首先,大部分配置文件或者日志文件都以空格为分隔符的,所以基本上不需要 -F ' '
第二,一般日志文件都有很多字段,有些人就会去数到底是哪一个字段  awk '$10==200  {print xx}'  xx.txt
其实不需要,既然空格为分隔符,我们就可以awk '/ 200 /'  ,也可以达到精确匹配的效果
第三,很多都记得awk 有{print xx},其实,{print xx}是给我们打印某个字段的时候用的,如果我们需要打印一整行,完全可以不写{print xx},直接
awk '/ 200 /'  

以上是用法总结
还可以找出一些黑客,恶意评论的ip,之前博客一直都有垃圾评论几百条,每天都有,姓名都是angelina
awk '/180.97.106.37 /'  /usr/local/nginx/logs/www.80ops.cn.log|awk '{print $1}'|sort |uniq -c
  20597 180.97.106.37
2万次请求,我的博客新开的,根本不可能那么多人访问
QQ截图20160116000020.jpg


QQ截图20160116000009.jpg
从cnzz里就可以看到,多数来自南京

日志格式
192.168.1.2 - - [15/Jan/2016:23:59:51 +0800] "HEAD / HTTP/1.1" 200 0 "-" "Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322) xxx" -
192.168.1.2 - - [16/Jan/2016:00:01:04 +0800] "GET / HTTP/1.1" 200 7601 "-" "xxx/2.0" -
192.168.1.2 - - [16/Jan/2016:00:01:05 +0800] "POST /wp-cron.php?doing_wp_cron=1452873665.4025080204010009765625 HTTP/1.0" 200 3 "-" "WordPress/4.3.2; http://www.80ops.cn" -
192.168.1.2 - - [16/Jan/2016:00:01:05 +0800] "GET / HTTP/1.1" 301 13 "-" "xxx/2.0" -








2016-01-15 23:21 举报
已邀请:
0

旅行

赞同来自:

明天再看下
0

言尽

赞同来自:

看着不错,
0

wsw13640218682

赞同来自:

本帖最后由 wsw13640218682 于 2016-1-16 19:13 编辑

awk '/200/ {ip[$1]++}END{for(i in ip)print ip,i}'  |uniq -c,这样也可以统计ip成功访问次数
0

lyhabc

赞同来自:

wsw13640218682 发表于 2016-1-16 19:09
awk '/200/ {ip[$1]++}END{for(i in ip)print ip,i}'  |uniq -c,这样也可以统计ip成功访问次数

可以,但是你记得住吗?
0

wsw13640218682

赞同来自:

lyhabc 发表于 2016-1-16 22:57
可以,但是你记得住吗?

你指的记得住是命令的本身,还是获取出来的信息?
0

phper

赞同来自:

受教了

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
  • 评分区间
  • 学分
  • -30 ~ 30
可选评分理由: