awk巩固练习题

时间:2021-05-26 14:39:36

第1章 awk数组练习题

1.1 文件内容(仅第一行)

[root@znix test]# head -1 secure-20161219 access.log

==> secure-20161219 <==

Dec 11 03:49:25 localhost sshd[27087]: Failed password for invalid user support from 123.31.34.190 port 55493 ssh2

==> access.log <==

101.226.61.184 - - [22/Nov/2015:11:02:00 +0800] "GET /mobile/sea-modules/gallery/zepto/1.1.3/zepto.js HTTP/1.1" 200 24662 "http://m.oldboyedu.com.cn/mobile/theme/oldboy/home/index.html" "Mozilla/5.0 (Linux; U; Android 5.1.1; zh-cn; HUAWEI CRR-UL00 Build/HUAWEICRR-UL00) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025478 Mobile Safari/533.1 MicroMessenger/6.3.7.51_rbb7fa12.660 NetType/3gnet Language/zh_CN"

1.2 统计secure文件中谁在破解你的密码(统计出破解你密码的ip地址出现的次数)

1.2.1 方法一

Failed         是用户登陆失败,连续多次的登陆失败,就是在暴力破解密码。

/Failed/        关键词查找

$ (NF-3)       表示倒数第四列

fa[$(NF-3)]++ 使用数组,对不同的ip分类累加

for(pol in fa)    for循环 使用pol 变量,逐个的取出fa[$(NF-3)] 数组中的内容。

print pol,fa[pol] 显示数组的内容,以及pol的次数,即统计.

[root@znix test]# awk '/Failed/{fa[$(NF-3)]++}END{for(pol in fa)print pol,fa[pol]}' secure-20161219|column -t

218.65.30.126    17163

218.65.30.61     17163

125.16.71.175    4

169.46.38.74     9

183.136.238.78   30

218.2.0.16       10

122.228.238.66   1

……

1.2.2 方法二

sort排序,把一样的都放在一起,uniq去重经常合并 -c 参数是计数.

[root@znix test]# awk '/Failed/{print $(NF-3)}' secure-20161219 |sort|uniq -c|sort -n

1.2.3 结果统计

[root@znix test]# awk '/Failed/{fa[$(NF-3)]++}END{for(pol in fa)print pol,fa[pol]}' secure-20161219|column -t|wc -l

88

1.3 统计access.log文件中对ip地址去重并统计重复数

使用数组对不同的ip进行统计

与第一题类似,这里只是统计的位置改变,变为$1.

[root@znix test]# awk '{hotel[$1]++}END{for(pol in hotel)print pol,hotel[pol]}' access.log |head -3

101.226.125.115 284

180.154.137.177 516

101.226.125.116 127

1.4 统计access.log文件中网站一共使用了多少流量

统计总数较为简单

i=i+$10可以写为 i+=$10

i累计相加,然后再输出最后一个i的值即可。

[root@znix test]# awk '{i=i+$10}END{print i}' access.log

2478496663

1.5 统计access.log文件中每个ip地址使用了多少流量

Connecting to 10.0.0.201:22...

Connection established.

To escape to local shell, press 'Ctrl+Alt+]'.

SSH-2.0-OpenSSH_5.3