监控网卡流量python代码详解编程语言

[Python]代码    

import re,time 
 
def get_net_info(): 
    flow1 = open('/proc/net/dev') 
    lines = flow1.read() 
    flow1.close() 
    e =  re.compile('(eth.)') 
    r_re = re.compile('eth..(.*?/s)') 
    r_tr = re.compile(".*eth.*") 
    match_re = r_re.findall(lines) 
    match_tr = r_tr.findall(lines) 
    eth = e.findall(lines) 
    return (eth,lines,match_re,match_tr) 
 
def net_flow(): 
    net_re_c={} 
    net_tr_c={}     
    net_tr_a=[]  
    for i in get_net_info()[3]: 
        net_tr_a.append(i.split()[8]) 
    net_tr_a=dict(zip(get_net_info()[0],net_tr_a)) 
    net_re_a = dict(zip(get_net_info()[0],get_net_info()[2])) 
    print "{eth0:(transmit,receive)" 
    while True:                 
        time.sleep(1)       
        net_re_b = dict(zip(get_net_info()[0],get_net_info()[2])) 
        net_tr_b = []  
        for i in get_net_info()[3]: 
            net_tr_b.append(i.split()[8]) 
        net_tr_b=dict(zip(get_net_info()[0],net_tr_b))  
        for i in net_re_b: 
            net_re_c[i] = int((float(net_re_b[i])-float(net_re_a[i]))/1024) 
        for i in net_tr_b:   
            net_tr_c[i]=int((float(net_tr_b[i])-float(net_tr_a[i]))/1024) 
        net_re_a = net_re_b 
        net_tr_a = net_tr_b  
        net_flow={} 
        for a in net_re_c:             
            net_flow[a]=(net_tr_c[a],net_re_c[a]) 
        print net_flow                                                 
if __name__ == "__main__": 
    net_flow()

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/8083.html

(0)
上一篇 2021年7月18日
下一篇 2021年7月18日

相关推荐

发表回复

登录后才能评论