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 相关文章推荐
动态创建类实例代码
Oct 07 Python
Python中random模块用法实例分析
May 19 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
May 19 Python
Python实现随机生成有效手机号码及身份证功能示例
Jun 05 Python
利用Python进行异常值分析实例代码
Dec 07 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
May 31 Python
小白入门篇使用Python搭建点击率预估模型
Oct 12 Python
Python自动发送邮件的方法实例总结
Dec 08 Python
在python中用url_for构造URL的方法
Jul 25 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
Tensorflow实现将标签变为one-hot形式
May 22 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函数解决SQL injection
2006/10/09 PHP
提升PHP执行速度全攻略(上)
2006/10/09 PHP
php mysql Errcode: 28 终极解决方法
2009/07/01 PHP
PHP生成Gif图片验证码
2013/10/27 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
php中请求url的五种方法总结
2017/07/13 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
限制复选框的最大可选数
2006/07/01 Javascript
document.compatMode介绍
2009/05/21 Javascript
javascript写的一个链表实现代码
2009/10/25 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
微信小程序radio组件使用详解
2018/01/31 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
Python实现的计数排序算法示例
2017/11/29 Python
python+opencv实现阈值分割
2018/12/26 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
Python集合基本概念与相关操作实例分析
2019/10/30 Python
使用Django搭建一个基金模拟交易系统教程
2019/11/18 Python
jupyter 添加不同内核的操作
2021/02/06 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
大专生自我评价
2014/01/28 职场文书
2014年党员承诺书范文
2014/05/20 职场文书
项目安全员岗位职责
2015/02/15 职场文书
教师求职自荐信
2015/03/26 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书
CentOS安装Nginx并部署vue
2022/04/12 Servers