首页 > 编程 > Python > 正文

Python脚本实现网卡流量监控

2020-02-23 06:24:38
字体:
来源:转载
供稿:网友
#/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都限制流量,才搞了这个小脚本

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表