ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python脚本实现网卡流量监控

2020-03-12 10:03:53  阅读:228  来源: 互联网

标签:memfilename Python send 网卡 监控 time close net recv


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

标签:memfilename,Python,send,网卡,监控,time,close,net,recv
来源: https://blog.csdn.net/qq_41396212/article/details/104811981

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有