老男孩IT教育,只培养技术精英

全国免费咨询电话:400-609-2893
Linux运维学习 AWK实践练习

    /    2019-03-08

1 函数的简单使用

[root@oldboy6 ~]# awk '{gsub(/[0-9]+/,"");print}' /tmp/passwd 
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
···

2 统计系统中的secure文件中谁在破解你的密码

1)找到谁在破解密码

[root@oldboy6 awk]# awk '/Failed/{print $(NF-3)}' secure-20161219 |sort |uniq -c  |sort -nk1
      1 103.237.144.68
      1 122.228.238.66
      1 195.20.3.210
      1 85.93.5.71
···

2)过滤出包含Failed password的行 并统计每个ip地址出现的次数

[root@oldboy6 awk]# awk '/Failed/{fa[$(NF-3)]++}END{for(pol in fa)print pol,fa[pol]}' secure-20161219 |sort -rnk2
218.65.30.25 68652
218.65.30.53 34326
218.87.109.154 21201
112.85.42.103 18065
112.85.42.99 17164
218.87.109.151 17163·

3 统计secure文件中每个用户,被同一ip破解多少次

1)进破解使用的用户及地址定向到文件中

[root@oldboy6 awk]# awk '/Failed/{print $(NF-5),$(NF-3)}' secure-20161219 >user-ip.log

2)对文件进行去重排序测

[root@oldboy6 awk]# awk '{h[$1" "$2]++}END{for(p in h) print p,h[p]}' user-ip.log |head 
export 209.126.122.70 3
cvsadmin 209.126.122.70 3
user1 209.126.122.70 1
dasusr1 209.126.122.70 4
1 118.100.251.170 1
git 209.126.122.70 5
boss 195.154.50.61 1
user1 46.139.219.84 2
www 123.31.34.165 2
webmaster 195.154.50.61 1

3)操作日志文件,取出数据

[root@oldboy6 awk]# awk '/Failed/{h[$(NF-5)" "$(NF-3)]++}END{for(p in h) print p,h[p]}'  secure-20161219 |head
export 209.126.122.70 3
cvsadmin 209.126.122.70 3
user1 209.126.122.70 1
dasusr1 209.126.122.70 4
1 118.100.251.170 1

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

[root@oldboy6 awk]# awk '{h[$1]++}END{for(i in h) print i,h[i]}' access.log |sort -nrk2 |head 
58.220.223.62 12049
112.64.171.98 10856
114.83.184.139 1982

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

1)流量总计

[root@oldboy6 awk]# awk '{sum=sum+$10}END{print sum}' access.log 
2478496663
[root@oldboy6 awk]# awk '{sum=sum+$10}END{print sum/1024^3}' access.log 
2.30828

2)每个ip使用的流量

[root@oldboy6 awk]# awk '{h[$1]=h[$1]+$10}END{for(p in h) print p,h[p]/1024^2 }' access.log |sort -rnk2|column -t |head 
114.83.184.139   29.91
117.136.66.10    21.3922
116.216.30.47    20.4716
223.104.5.197    20.4705
116.216.0.60     18.2584

6 统计access.log文件中每个ip地址使用了多少流量和每个ip地址的出现次数

[root@oldboy6 awk]# awk '{count[$1]++;sum[$1]=sum[$1]+$10}END{for(pol in sum)print pol,count[pol],sum[pol]}' access.log |sort -nrk2 |column -t |head 
58.220.223.62    12049  12603075
112.64.171.98    10856  15255013
114.83.184.139   1982   31362956
117.136.66.10    1662   22431302
115.29.245.13    1318   1161468
223.104.5.197    961    21464856
116.216.0.60     957    19145329

格式化命令

awk '{
  count[$1]++
  sum[$1]+=$10
}END{
  for(pol in sum)
  print pol,count[pol],sum[pol]
}'
 access.log |sort -nrk3 |head

格式化后执行

[root@oldboy6 awk]# awk '{
  count[$1]++
  sum[$1]+=$10
}END{
  for(pol in sum)
  print pol,count[pol],sum[pol]
}' access.log |column -t|  sort -nrk3 |head 
114.83.184.139   1982   31362956
117.136.66.10    1662   22431302
116.216.30.47    506    21466000
223.104.5.197    961    21464856
116.216.0.60     957    19145329
114.141.164.180  695    17219553
114.111.166.22   753    17121524
223.104.5.202    871    16911512
116.228.21.187   596    15969887
112.64.171.98    10856  15255013

7 按要求得到最后面的格式的结果

文件内容

cat >next2.txg<< EOF
<span class="hljs-selector-tag" style="font-size: inherit; line-height: inherit; margin: 0px;

(2)

分享至