#/usr/bin/env/python #coding=utf-8 import sys,re,time,os maxdata = 50000 #单位KB memfilename = '/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() |