博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
比较awk python: [文件]web日志信息统计 。 [命令]netstat命令状态统计
阅读量:6201 次
发布时间:2019-06-21

本文共 2550 字,大约阅读时间需要 8 分钟。

web日志文件统计分析、netstat 命令行统计分析

比价awk和python的处理方法

1. web日志内容 ---文件形式

root@h111:/var/log/nginx# cat access.log192.168.1.3 - - [04/Feb/2018:19:59:42 +0800] "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36"192.168.1.3 - - [04/Feb/2018:19:59:43 +0800] "GET /favicon.ico HTTP/1.1" 404 208 "http://192.168.1.111/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36"192.168.1.3 - - [04/Feb/2018:19:59:54 +0800] "GET /png HTTP/1.1" 404 208 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36"192.168.1.3 - - [04/Feb/2018:19:59:58 +0800] "GET /a.jpg HTTP/1.1" 404 208 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36"192.168.1.3 - - [04/Feb/2018:20:06:56 +0800] "GET /a.jpg HTTP/1.1" 404 208 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36"

1.1 用awk处理

其中$7是文件名,$10是大小。 $[$7]+=$10表示 同一个文件名大小累加。awk数组也可以当python字典来理解。
++b[$7] 即同名文件次数累加。

root@h111:/var/log/nginx# awk '{a[$7]+=$10;++b[$7];total+=$10}END{for(x in a)print b[x],x,a[x]}'  access.log         1 /png 2082 /a.jpg 4161 / 3961 /favicon.ico 208

1.2 用python处理

这里利用了Counter,不用处理首次为0的赋值可以直接累加。累加方法和awk基本一致。

#/usr/bin/env python3#author infaaffrom collections import Counterc=Counter()s=Counter()with open('netstat.txt') as f:    for line in f:        key=line.split()[6]        value=line.split()[9]        c[key]+=1        s[key]+=int(value)print("次数:  %s"%c)print("大小:  %s"%s)for i in c:    print(i.center(30),c[i],s[i])

结果

比较awk python: [文件]web日志信息统计 。 [命令]netstat命令状态统计

2. tcp状态统计 --- 命令与管道形式

其中tcp6与tcp一起统计

比较awk python: [文件]web日志信息统计 。 [命令]netstat命令状态统计

2.1 awk处理

NF表示 number of filed 由于number累计到最后,即表示最后一列。
(awk中 N number F field R row S split ,如RS=row split ,NR= number of row 行号)

root@h111:~# netstat -an | awk '/^tcp/{++s[$NF]}END{for(i in s){print i,s[i]}}'LISTEN 6ESTABLISHED 1

2.2 python处理

这里 未使用Counter,判断当key未出现过时,需要手动初始化为1。
这里接收linux stdout 的管道形式,利用了fileinput库

文件net.py

#!/usr/bin/env python3import fileinputd={}for line in fileinput.input():    if line.split()[0].startswith('tcp'):        key=line.split()[5]        if key in d:            d[key]+=1        else:            d[key]=1print(d)##默认值方法二,在累加前, d.setdefault(key,0)

服务器上管道调用 net.py

比较awk python: [文件]web日志信息统计 。 [命令]netstat命令状态统计

说明: 2种方法实际思想相同,利用(awk数组或python字典) 字典方式

次数:发现相同元素累加1
大小:发现相同元素累加大小

awk胜在短小精悍。复杂情况下,语句复杂。 awk语法复杂,长时间不使用容易忘记。。。

python胜在简单明了。代码稍长,但好维护。

转载于:https://blog.51cto.com/13606158/2082690

你可能感兴趣的文章
Sleepcare在医院的使用场景
查看>>
IDC环境建设的正确方式
查看>>
10 个最适合 Web 和 APP 开发的 NodeJS 框架
查看>>
东鹏与联想企业网盘携手把信送给“加西亚”
查看>>
多云模型:不只是减轻风险的战略
查看>>
云计算如何改变好莱坞的电影特效?
查看>>
黑莓允许开发者将通讯软件BBM植入iOS和Android应用
查看>>
《程序分析方法》——导读
查看>>
深圳国税依托大数据 确保 “分析好”
查看>>
Snap一季度财报成大考?新广告系统是否有效、营收是否达标
查看>>
《可穿戴创意设计:技术与时尚的融合》一一3.3 纺织与教育
查看>>
开源 RISC-V CPU挑战闭源 x86 和 ARM CPU
查看>>
《Scala机器学习》一一3.7 总结
查看>>
量子通信和大数据最有市场突破前景
查看>>
我国5G处于从技术到标准化过渡阶段
查看>>
2020年全球ESL市场规模将增长到200亿
查看>>
Gartner:企业在移动应用研发上的投入过少
查看>>
思科公司提出监测数据中心的计划
查看>>
Salesforce斥资7亿美元收购营销数据初创企业Krux
查看>>
微软推出Windows Hello 或将帮助用户摆脱密码
查看>>