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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
Python实现爬取需要登录的网站完整示例
Aug 19 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
Apr 17 Python
django 解决manage.py migrate无效的问题
May 27 Python
Python代码实现http/https代理服务器的脚本
Aug 12 Python
python中open函数的基本用法示例
Sep 07 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
Python的历史与优缺点整理
May 26 Python
Python如何使用ElementTree解析xml
Oct 12 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
Feb 24 Python
Pandas数据结构之Series的使用
Mar 31 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
配置支持SSI
2006/11/25 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
vue实现文字加密功能
2019/09/27 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
Python编写百度贴吧的简单爬虫
2015/04/02 Python
详解python中asyncio模块
2018/03/03 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
简单了解python协程的相关知识
2019/08/31 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
英国精品买手店:Browns Fashion
2016/09/29 全球购物
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
酒店个人求职信范文
2014/01/25 职场文书
挂科检讨书范文
2014/02/20 职场文书
拾金不昧锦旗标语
2014/06/27 职场文书
525心理活动总结
2014/07/04 职场文书
2014年统计工作总结
2014/11/21 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书