Python脚本实现网卡流量监控

作者:junjie 时间:2022-11-27 11:36:51 


#/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都限制流量,才搞了这个小脚本

标签:Python,网卡,流量监控
0
投稿

猜你喜欢

  • Python多进程分块读取超大文件的方法

    2023-12-07 02:19:28
  • Dreamweaver如何制作会移动的广告条

    2010-10-20 20:04:00
  • python中封包建立过程实例

    2021-11-13 14:29:08
  • python自动化测试中装饰器@ddt与@data源码深入解析

    2021-10-08 16:07:14
  • ImageMagick FAQ 问题摘要

    2008-10-21 13:14:00
  • 在Windows下安装配置CPU版的PyTorch的方法

    2023-07-18 15:04:17
  • python偏函数partial用法

    2023-09-24 22:25:06
  • Asp测试网速代码(带进度条)

    2007-11-12 13:09:00
  • Python定时发送消息的脚本:每天跟你女朋友说晚安

    2023-05-26 02:47:14
  • ASP Application 对象用户手册

    2008-10-23 13:59:00
  • php实现的微信分享到朋友圈并记录分享次数功能

    2023-10-17 04:32:14
  • 如何解决客户机页面刷新时连接不上数据库问题?

    2009-12-16 18:24:00
  • 使用Python实现简单的服务器功能

    2021-06-29 09:25:31
  • python编程webpy框架模板之def with学习

    2023-08-07 11:23:32
  • python 提取html文本的方法

    2021-05-27 03:43:46
  • PHP PDOStatement::nextRowset讲解

    2023-06-06 07:18:28
  • 怎样缩小SQL Server数据库的日志文件

    2009-01-15 13:08:00
  • 让你同时上传 1000 个文件 (二)

    2023-11-14 10:22:52
  • python绘制双Y轴折线图以及单Y轴双变量柱状图的实例

    2023-06-02 00:29:11
  • 一些需要禁用的PHP危险函数(disable_functions)

    2023-11-23 15:29:25
  • asp之家 网络编程 m.aspxhome.com