专栏首页python3python:查看linux网卡流量

python:查看linux网卡流量

此脚本可列出一定时间的流量及平均流量。时间可自己设置。

#!/usr/bin/env python
import time,sys
def all_flow(INTERFACE):
    f = open('/proc/net/dev')
    flow_info=f.readlines()
    in_flow=[]
    out_flow=[]
    for eth_dev in flow_info:
        if INTERFACE in eth_dev:
            in_flow.append(int(eth_dev.split(':')[1].split()[0]))
            out_flow.append(int(eth_dev.split(':')[1].split()[9]))
    f.close()
    return in_flow,out_flow
def format_flow(flow):
    flow_n = float(flow)
    if flow_n > 1000000:
        return '%.3f MB' % (flow_n/1024/1024) 
    else:
        return '%.3f KB' % (flow_n/1024)
                                                  
if __name__=='__main__':
    if len(sys.argv) > 1:
        INTERFACE = sys.argv[1]
    else:
        INTERFACE = 'eth'
    in_flows = {}
    out_flows = {}
    all_flows0 = all_flow(INTERFACE)
    count = 0   
    while count < 5:
        time.sleep(1)          
        all_flows1=all_flow(INTERFACE)
        for x in range(len(all_flows0[0])):
            if len(sys.argv) >1:
                curr_eth = INTERFACE
            else:
                curr_eth = 'eth%s' % x
            if len(in_flows) == x:
                in_flows[curr_eth]= []
                out_flows[curr_eth]=[]
            print curr_eth+" in:"+ format_flow(all_flows1[0][x]-all_flows0[0][x])+"  out:"+\
            format_flow(all_flows1[1][x]-all_flows0[1][x])
            in_flows[curr_eth].append(all_flows1[0][x]-all_flows0[0][x])
            out_flows[curr_eth].append(all_flows1[1][x]-all_flows0[1][x])
        all_flows0 = all_flows1       
        count=count+1
                                                      
    for key in in_flows:
        sum_a=0
        in_flow=''
        for i in in_flows[key]:
            sum_a = sum_a+i
            in_flow = in_flow + format_flow(i) + ' '
        #print key + ' flow_in is: %s'% in_flow
        print key +" average of flow_in is: %s" % format_flow(sum_a/count)
                                                  
    for key in out_flows:
        sum_a=0
        out_flow=''
        for i in out_flows[key]:
            sum_a = sum_a+i
            out_flow = out_flow + format_flow(i) + ' '
        #print key + ' flow_out is: %s'% out_flow
        print key +" average of flow_out is: %s" % format_flow(sum_a/count)

默认为列出除lo以外的所有网卡的流量。也可在运行时加入网卡名作为参数如:eth0 或eth1等等。比较懒,没有做参数判断。也就是参数里输入任何字符串都不会报错,当然脚本运行获取的结果也就不会正确。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获。

    Crossin先生
  • php yield关键字以及协程的实现

    php的yield是在php5.5版本就出来了,而在初级php界却很少有人提起,我就说说个人对php yield的理解

    仙士可
  • CIFAR10数据集实战-LeNet5神经网络(中)

    用户6719124
  • BERT中文实战:文本相似度计算与文本分类

    谷歌提供了以下几个版本的BERT模型,每个模型的参数都做了简单的说明,中文的预训练模型在11月3日的时候提供了,这里我们只需要用到中文的版本

    机器学习入门与实战
  • 深度学习环境配置有哪些坑?

    深度学习第一问是关于环境配置的。之前笔者也在深度学习60讲系列中讲到如何配置深度学习开发环境的问题:深度学习笔记15:ubuntu16.04 下深度学习开发环境...

    石晓文
  • python中的__init__.py作用

    在Python中,我们经常会看到一个文件夹下有若干个py文件,其中总有那么一个py文件在命名上很特别,就是__init__.py。该py文件前后各是两个下划线,...

    Defu Li
  • pytest文档29-allure-pytest(最新最全,保证能搞成功!)

    之前写了个pytest的allure相关的教程,只是停留在环境搭建完成,后续一直没用,小编一直不喜欢这种花里胡哨的报告。 没办法,领导就喜欢这种,小伙伴们也喜欢...

    上海-悠悠
  • 【漏洞实战】Apache Shiro反序列化远程代码执行复现及“批量杀鸡”

    利用vmware workstation,安装一个操作系统,执行以下指令,更换系统源,并且安装docker

    用户1631416
  • Python数据可视化:5段代码搞定散点图绘制与使用,值得收藏

    导读:什么是散点图?可以用来呈现哪些数据关系?在数据分析过程中可以解决哪些问题?怎样用Python绘制散点图?本文逐一为你解答。

    CDA数据分析师
  • 赶上年底最后一趟末班车——Python编程基础之小白入门

    正如人与人之间的沟通需要语言,人与计算机之间的沟通,也需要语言,连接人与计算机沟通的桥梁就是编程语言。任何编程语言只要用来开发程序,都怀揣着同一使命——“为人类...

    CDA数据分析师

扫码关注云+社区

领取腾讯云代金券