Python脚本实现网卡流量监控


Posted in Python onFebruary 14, 2015
#/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 相关文章推荐
python测试驱动开发实例
Oct 08 Python
pygame学习笔记(4):声音控制
Apr 15 Python
python机器学习之贝叶斯分类
Mar 26 Python
python读取图片并修改格式与大小的方法
Jul 24 Python
python 同时运行多个程序的实例
Jan 07 Python
详解python中__name__的意义以及作用
Aug 07 Python
详解Python中的正斜杠与反斜杠
Aug 09 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
PyTorch里面的torch.nn.Parameter()详解
Jan 03 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
python如何编写win程序
Jun 08 Python
Python jiaba库的使用详解
Nov 23 Python
Centos5.x下升级python到python2.7版本教程
Feb 14 #Python
Python脚本实现DNSPod DNS动态解析域名
Feb 14 #Python
Python压缩和解压缩zip文件
Feb 14 #Python
Python简单日志处理类分享
Feb 14 #Python
Python魔术方法详解
Feb 14 #Python
Python中非常实用的一些功能和函数分享
Feb 14 #Python
深入理解Python中的元类(metaclass)
Feb 14 #Python
You might like
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
php计算程序运行时间的简单例子分享
2014/05/10 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
PHP实现验证码校验功能
2017/11/16 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
慎用 somefunction.prototype 分析
2009/06/02 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
如何写你的创业计划书
2014/01/07 职场文书
年终总结会主持词
2014/03/25 职场文书
市场策划求职信
2014/08/07 职场文书
地道战观后感300字
2015/06/04 职场文书
JavaScript实现优先级队列
2021/12/06 Javascript