Python脚本实现网卡流量监控

#/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')为你想要的命令

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值