web日志文件统计分析、netstat 命令行统计分析
比价awk和python的处理方法

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

root@h111:/var/log/nginx# cat access.log
192.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 208
2 /a.jpg 416
1 / 396
1 /favicon.ico 208

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

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

结果

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

其中tcp6与tcp一起统计

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 6
ESTABLISHED 1

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

文件net.py

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

服务器上管道调用 net.py

说明: 2种方法实际思想相同,利用(awk数组或python字典) 字典方式
次数:发现相同元素累加1
大小:发现相同元素累加大小

awk胜在短小精悍。复杂情况下,语句复杂。 awk语法复杂,长时间不使用容易忘记。。。
python胜在简单明了。代码稍长,但好维护。

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

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

  1. windows命令----netstat命令

    netstat:查看系统端口使用情况: 开始--运行--cmd 进入命令提示符(或者window + r  输入cmd): 1:输入 netstat  -nao 2:查看指定端口占用情况: 输入  n ...

  2. 查看android端口命令,netstat命令-查看端口被占用情况,并杀死进程

    netstat命令的功能是显示网络连接.路由表和网络接口信息 命令格式:netstat [选项] 查看命令帮助:netstat -help 查看所有的端口占用情况 netstat -ano 查看指定端 ...

  3. Pyinstaller打包python文件太大?教你三个小技巧有效减小文件体积

    简介 有时候需要在未安装Python环境的平台上运行py程序,使用pyinstaller打包很方便,但打包后的可执行文件实在是太大了.原因在于打包时pyinstaller本就已经关联了很多的pytho ...

  4. Web日志目录及日志分析

    目录 Apache Nginx Tomcat Web日志的分析 在很多时候,我们经常需要分析网站的日志,以此来查看网站运行的各种情况.比如说如果网站被攻击,我们可以通过查看日志来溯源攻击者. Apac ...

  5. python文件转换成exe和apk文件

    将Python文件转换为Exe文件可以使用pyinstaller或cx_Freeze等工具来实现.这些工具将Python文件转换为独立的可执行文件,这样就可以在没有Python环境的计算机上运行该程序 ...

  6. netstat命令输出详解

    1.说明 命令netstat用于查看Linux服务器上当前机器监听的端口信息, 对应的查询结果可以为我们提供很多有用的信息, 如下是执行命令后的查询结果: netstat -nltp 2.Proto, ...

  7. nbtstat命令linux_nbtstat命令基础知识

    nbtstat 命令 nbtstat 命令使用tcp/ip 上的netBIOS 显示协议统计和当前tcp/ip联接,使用这个命令可以得到过程主机的netBIOS,比如用户名,所属的工作组,网卡的mac ...

  8. netstat 命令(Linux)

    netstat 命令 netstat 命令用于显示各种网络相关信息,如网络连接, 路由表, 接口状态等等 列出所有处于监听状态的tcp端口 netstat -lt 查看所有的端口信息, 包括 PID ...

  9. netstat命令 + 黑洞路由

    netstat命令 netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat是在内核中访问网络及相关信息的程序,它能提供TCP ...

最新文章

  1. 线程和进程有什么区别?
  2. 猜拳游戏c语言代码流程图,这是一个猜拳游戏的程序 大家有更好的解决方法么?...
  3. 关于移动端上下滑动卡顿不流畅现象的解决方案
  4. 什么样的python程序员好找工作-Python学到什么程度才可以去找工作?掌握这4点足够了!...
  5. python3.5.0下载-Python for Linux
  6. FreeBSD配置防火墙开启SSH服务
  7. 知识图谱学习小组学习大纲
  8. python是一门高级的计算机语言对吗_Python是一门怎样的编程语言
  9. HDOJ 3415 Max Sum of Max-K-sub-sequence
  10. mysql rsync复制,mysql复制又同步
  11. java collections读书笔记(3) vector(2)
  12. 一个女SEOer的忏悔书
  13. PHP全文索引 讯搜xunsearch
  14. Swift数据类型简介
  15. 一文看懂:工程项目管理软件有哪些?怎么选?
  16. 高维球体的体积是多少
  17. java 数字转英文_Java如何将数字转成英文
  18. 怎样使footer始终处于页面的底部
  19. 还自己写代码?VBA录制宏了解下
  20. 打印等腰三角形图案[1]

热门文章

  1. (@WhiteTaken)设计模式学习——代理模式
  2. android——数据库版本升/降级问题
  3. 同一个项目,项目名称不一致,这两个项目同时在Eclipse中出现
  4. JVM笔记7:类加载器
  5. javascript cookies 存、取、删除实例【转】
  6. [转]C#正则表达式小结
  7. mysql 试题_超经典MySQL练习50题,做完这些你的SQL就过关了
  8. ct与x光的哪个辐射大_胸片、CT、PET/CT哪个辐射大?结果你很难猜到
  9. vc++ 类 定时器api_关于JS中一些重要的api实现, 巩固你的原生JS功底
  10. android fragment 教程,Android app开发中的Fragment入门学习教程