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

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