#/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()
|