python如何查看系统网络流量的信息


Posted in Python onSeptember 12, 2016

前言

流量信息可以直接在/proc/net/dev中进行查看,笔者实现的程序使用命令:

python net.py interface

其中interface为网卡名称,使用什么网卡,电脑有哪些网卡,可以使用

sudo ifconfig

进行查看。

Python实现的程序如下:

# coding:utf-8
import sys, time, os


'''
Inter-|  Receive                        | Transmit
 face |bytes  packets errs drop fifo frame compressed multicast|bytes  packets errs drop fifo colls carrier compressed
  lo:  28169   364  0  0  0   0     0     0  28169   364  0  0  0   0    0     0
 wlan1: 7432984  6018  0  0  0   0     0     0  681381  6115  0  0  0   0    0     0
vmnet1:    0    0  0  0  0   0     0     0    0   56  0  0  0   0    0     0
vmnet8:    0    0  0  0  0   0     0     0    0   55  0  0  0   0    0     0
 eth0:    0    0  0  0  0   0     0     0    0    0  0  0  0   0    0     0

'''

_unit_=['B','KB','MB','GB','TB']

def get_net_data(interface):
  for line in open('/proc/net/dev', 'r'):
    if line.split(':')[0].find(interface)>=0:
      return map(int, line.split(':')[1].split())

def convert_bytes_to_string(b):
  cnt = 0
  while b >= 1024.0:
    b = float(b) / 1024.0
    cnt += 1
  return '%.2f%s'%(b,_unit_[cnt])

if __name__ == '__main__':
  interface = sys.argv[1]
  while True:
    net_data = get_net_data(interface)
    receive_data_bytes = net_data[0]
    transmit_data_bytes = net_data[8]
    os.system('clear')
    print 'Interface:%s  -> Receive Data: %s  Transmit Data: %s'%(interface, convert_bytes_to_string(receive_data_bytes), convert_bytes_to_string(transmit_data_bytes))
    time.sleep(1)

程序入口从if name=='main'处开始,首先通过参数获取interface,然后调用get_net_data()函数获取流量信息,接下来都是一些数据处理的过程。

总结

以上就是这篇文章的全部内容了,希望对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
web.py获取上传文件名的正确方法
Aug 26 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 Python
在Python的Django框架上部署ORM库的教程
Apr 20 Python
Python中常见的数据类型小结
Aug 29 Python
python正则分析nginx的访问日志
Jan 17 Python
Python3利用print输出带颜色的彩色字体示例代码
Apr 08 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
python之pymysql模块简单应用示例代码
Dec 16 Python
tensorflow的计算图总结
Jan 12 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
快速解释如何使用pandas的inplace参数的使用
Jul 23 Python
python tkinter实现连连看游戏
Nov 16 Python
Python爬取三国演义的实现方法
Sep 12 #Python
python 读写、创建 文件的方法(必看)
Sep 12 #Python
Python读写Json涉及到中文的处理方法
Sep 12 #Python
详细介绍Python的鸭子类型
Sep 12 #Python
Python 读写文件和file对象的方法(推荐)
Sep 12 #Python
使用Python进行二进制文件读写的简单方法(推荐)
Sep 12 #Python
浅谈python对象数据的读写权限
Sep 12 #Python
You might like
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
php 文件缓存函数
2011/10/08 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
javascript 面向对象封装与继承
2014/11/27 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
vue父子组件的嵌套的示例代码
2017/09/08 Javascript
vue生成token保存在客户端localStorage中的方法
2017/10/25 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
jquery中为什么能用$操作
2019/06/18 jQuery
详解JavaScript执行模型
2020/11/16 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
python使用calendar输出指定年份全年日历的方法
2015/04/04 Python
python通过socket查询whois的方法
2015/07/18 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
2018/06/09 Python
解决Python3中的中文字符编码的问题
2018/07/18 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
Python 如何展开嵌套的序列
2020/08/01 Python
英国门把手公司:Door Handle Company
2019/05/12 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
最新的互联网创业计划书
2014/01/10 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
2014年幼儿园植树节活动方案
2014/03/02 职场文书
建设办主任四风问题整改思路和措施
2014/09/20 职场文书
道歉短信大全
2015/05/12 职场文书
学校财务管理制度
2015/08/04 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis