shell统计ip访问情况,要求分析访问日志分析。
【题目要求】
有日志 1.log,部分内容如下:
112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com
“/seccode.php?update=0.5593110133088248″ 200″http://formulax.haotui.com/registerbbs.php” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
SV1;)”
61.147.76.51 – [25/Sep/2013:16:08:31 +0800]xyzdiy.5d6d.com
“/attachment.php?aid=4554&k=9ce51e2c376bc861603c7689d97c04a1&t=1334564048&f
id=9&sid=zgohwYoLZq2qPW233ZIRsJiUeu22XqE8f49jY9mouRSoE71″
301″http://xyzdiy.5d6d.com/thread-1435-1-23.html” “Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)”
统计出每个 IP 的访问量有多少
【习题分析】
这种分析日志的需求,在平时工作中很常见,而且找运维工作时的笔试题里面出现频率也非常多。
根据日志内容,可以看到 IP 地址就是第一段内容,所以只需要把 1.log 的第一段给过滤出来,然后
近一步统计每一个 IP 的量即可。
过滤第一段,使用 awk 就可以很容易得到,而统计每个 IP 的访问量则需要排序然后再计算数量,
排序使用 sort 命令,统计每个 IP 访问量用 uniq。
【习题答案】
awk '{print $1}' 1.log |sort -n |uniq -c |sort -n
【答案解析】
1. awk 命令在分段方面还是比较有优势的,这里的{print $1}讲第一段打印出来,awk 可以用-F 指
定分隔符,如果不指定分隔符,默认就以空白字符(比如空格、Tab 等),本题中,IP 地址就是在
第一段。
2. sort 命令是排序的命令,-n 选项表示以数字的形式排序,如果不加-n,则以 ASCII 排序,本题中
的 IP 地址以数字的形式排序更容易区分。
3. uniq 命令是用来去重复的,一个文本中如果有多行内容是一模一样的,使用 uniq 命令就可以把
相同内容的行给删除掉,只留一行。而-c 选项的作用是计算重复的行数,所以在此题中使用 uniq -
c 正好可以计算 IP 地址的访问数量。不过,大家一定要注意,uniq 去重的前提是首先要排序。
4. 本题答案里最后没得 sort -n 意思是按访问量大小来排序,请求量越大的 IP 排在越后面,如果要
想排在前面,可以加一个-r 选项,即 sort –nr
本文由 帝一博客 原创发布。用户在本站发布的原创内容(包括但不仅限于回答、文章和评论),著作权均归用户本人所有。独家文章转载,请联系邮箱:17762131@qq.com。获得授权后,须注明本文地址: https://bubukou.com/mljb/1122.html
-
bat脚本批处理实现手动输入变量 参数
2019-09-18 13:06
-
企业Shell实战-MySQL分库分表备份脚本
2019-07-20 08:00
-
shell脚本统计所有人有总钱数awk脚本
2019-07-18 07:53
-
shell脚本硬件信息获取json数值输出
2019-07-17 07:54
-
Shell处理日志-保留30天,超过14天的压缩为gz格式
2019-07-17 07:54
-
Shell脚本简单入门教程
2019-07-17 07:53
-
mysql数据库批量插入数据shell脚本实现
2019-07-15 07:48
-
开发Shell脚本解决DOS安全Linux服务器生产案例
2019-07-15 07:48
-
老鸟教你如何监控网站URL是否正常
2019-07-15 07:47
-
Linux Shell系列教程Shell文件包含
2019-07-15 07:46
网友留言评论