python实现网卡流量监控

#/usr/bin/env/python#coding=utf-8import sys,re,time,osmaxdata = 50000 #单位KBmemfilename = '/tmp/newnetcardtransdata.txt'netcard = '/proc/net/dev'def checkfile(filename):    if os.path.isfile(filename):        pass    else:        f = open(filename, 'w')        f.write('0')        f.close()def get_net_data():    nc = netcard or '/proc/net/dev'    fd = open(nc, "r")    netcardstatus = False    for line in fd.readlines():        if line.find("eth0") > 0:            netcardstatus = True            field = line.split()            recv = field[0].split(":")[1]            recv = recv or field[1]            send = field[8]    if not netcardstatus:        fd.close()        print 'Please setup your netcard'        sys.exit()    fd.close()    return (float(recv), float(send))    def monfirst(filename):    nowtime = time.strftime('%m-%d %H:%M',time.localtime(time.time()))    sec = time.localtime().tm_sec    if nowtime == '01-01 00:00':        if sec < 10:            f = open(filename, 'w')            f.write('0')            f.close()               def net_loop():    (recv, send) = get_net_data()    checkfile(memfilename)    monfirst(memfilename)    lasttransdaraopen = open(memfilename,'r')    lasttransdata = lasttransdaraopen.readline()    lasttransdaraopen.close()    totaltrans = int(lasttransdata) or 0    while True:        time.sleep(3)        (new_recv, new_send) = get_net_data()        recvdata = (new_recv - recv) / 1024        senddata = (new_send - send) / 1024        totaltrans += int(recvdata)        totaltrans += int(senddata)        memw = open(memfilename,'w')        memw.write(str(totaltrans))        memw.close()        if totaltrans >= maxdata:            os.system('init 0')if __name__ == "__main__":    net_loop()

用ROOT权限运行,maxdata为最大流量限制超过这个限制,系统自动关机当然,你可以改os.system(‘init 0′)为你想要的命令主要是现在VPS都限制流量,才搞了这个小脚本点击下载

把自己当傻瓜,不懂就问,你会学的更多

python实现网卡流量监控

相关文章:

你感兴趣的文章:

标签云: