监控linux流量python版

11/24/2015来源:python人气:1420

python版监控linux流量

直接上代码,使用OptionParser来传入参数

#coding:utf-8
#-------------
#Author:Hu
#Data:20150520
#-------------

from __future__ import division
import re
import time
from optparse import OptionParser


def getbandwidth(eth='eth0',intevel=1):
    a=open('/PRoc/net/dev')
    data=a.read()
    patten=eth + '.*'
    if  not re.search(patten,data):
        print "The ETHname not have"
        exit(1)
    Rev_old=re.search(patten,data).group().replace(':',' ').split()[1]
    Send_old=re.search(patten,data).group().replace(':',' ').split()[9]
    a.close()

    while True:
        #print intevel
        time.sleep(int(intevel))
        a=open('/proc/net/dev')
        data=a.read()
        Rev=re.search(patten,data).group().replace(':',' ').split()[1]
        Send=re.search(patten,data).group().replace(':',' ').split()[9]
        diff_Rev=int(Rev)-int(Rev_old)
        diff_Sen=int(Send)-int(Send_old)
        diff_M=diff_Rev*8/1024/1024/int(intevel)
        diff_S=diff_Sen*8/1024/1024/int(intevel)
        print time.strftime("%Y%m%d %H:%M:%S") + '   The Recevie is  %6.2f Mbps(byte is %d)' % (diff_M,diff_Rev) + '   The Send is  %6.2f Mbps(byte is %d)' % (diff_S,diff_Sen)
        Rev_old=Rev
        Send_old=Send
        a.close()
if __name__=='__main__':
    
    import sys
    usage='''%prog [-i ethname] [-t interveltime]
           Example:%prog -i eth0 -t 1'''
    parser=OptionParser(usage=usage,version='2.0_20150602')

    parser.add_option('-i','--interface',dest='interface',default='eth0',help='Wann to interface')
    parser.add_option('-t','--time',dest='intevel',type='int',default='1',help='The intevel time')
    (options,args)=parser.parse_args()
    print "The interafce is %s and the intevel time is %d" % (options.interface,options.intevel)
    getbandwidth(options.interface,options.intevel)

使用方法:

'''%prog [-i ethname] [-t interveltime]
           Example:%prog -i eth0 -t 1'''
默认是eth0 ,时间间隔是1

效果如下:
[[email protected] tools]# ./bandwidth3.py -version
Usage: bandwidth3.py [-i ethname] [-t interveltime]
           Example:bandwidth3.py -i eth0 -t 1

bandwidth3.py: error: no such option: -v
[[email protected] tools]# ./bandwidth3.py -i eth1 -t 1
The interafce is eth1 and the intevel time is 1
20151113 16:51:43   The Recevie is    0.01 Mbps(byte is 1876)   The Send is    0.00 Mbps(byte is 154)
20151113 16:51:44   The Recevie is    0.02 Mbps(byte is 2156)   The Send is    0.00 Mbps(byte is 202)
20151113 16:51:45   The Recevie is    0.08 Mbps(byte is 10482)   The Send is    0.00 Mbps(byte is 202)
20151113 16:51:46   The Recevie is    0.02 Mbps(byte is 2014)   The Send is    0.00 Mbps(byte is 202)
20151113 16:51:47   The Recevie is    0.02 Mbps(byte is 2612)   The Send is    0.00 Mbps(byte is 202)
20151113 16:51:48   The Recevie is    0.09 Mbps(byte is 11394)   The Send is    0.00 Mbps(byte is 202)

 



如有问题,请联系[email protected]QQ.com