python 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值