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随机生成指定长度密码的方法
Apr 04 Python
python脚本设置系统时间的两种方法
Feb 21 Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 Python
Python实现按照指定要求逆序输出一个数字的方法
Apr 19 Python
python的scikit-learn将特征转成one-hot特征的方法
Jul 10 Python
python实现排序算法解析
Sep 08 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 Python
python文件选择对话框的操作方法
Jun 27 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 Python
python树的同构学习笔记
Sep 14 Python
Python函数基本使用原理详解
Mar 19 Python
python 爬虫之selenium可视化爬虫的实现
Dec 04 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生成月历代码
2007/06/14 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
php给图片加文字水印
2015/07/31 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
php 实现银联商务H5支付的示例代码
2019/10/12 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
JavaScript DOM 添加事件
2009/02/14 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
bootstrap Table服务端处理分页(后台是.net)
2017/10/19 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
Python实现文件复制删除
2016/04/19 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
python随机生成库faker库api实例详解
2019/11/28 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
降低python版本的操作方法
2020/09/11 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
英国奢侈皮具品牌:Aspinal of London
2018/09/02 全球购物
学习雷锋活动总结
2014/04/29 职场文书
导师就业推荐信范文
2014/05/22 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书