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 相关文章推荐
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
编写多线程Python服务器 最适合基础
Sep 14 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
Feb 13 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
Django的Modelforms用法简介
Jul 27 Python
Python多叉树的构造及取出节点数据(treelib)的方法
Aug 09 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
Sep 25 Python
Python要如何实现列表排序的几种方法
Feb 21 Python
python matplotlib imshow热图坐标替换/映射实例
Mar 14 Python
Pycharm Plugins加载失败问题解决方案
Nov 28 Python
Pytorch中的数据集划分&正则化方法
May 27 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
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
php查询操作实现投票功能
2016/05/09 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
Js冒泡事件详解及阻止示例
2014/03/21 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
[04:29]2014DOTA2国际邀请赛 主赛事第三日TOPPLAY
2014/07/21 DOTA
Python对excel文档的操作方法详解
2018/12/10 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
python迭代器常见用法实例分析
2019/11/22 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
世界最大的票务市场:viagogo
2017/02/16 全球购物
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
医院检讨书范文
2014/02/01 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书