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实现发送QQ邮件的封装
Jul 14 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
对Python3中的input函数详解
Apr 22 Python
Pycharm更换python解释器的方法
Oct 29 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
python实现QQ空间自动点赞功能
Apr 09 Python
django实现类似触发器的功能
Nov 15 Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 Python
Python反爬虫伪装浏览器进行爬虫
Feb 28 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
Windows下Sqlmap环境安装教程详解
Aug 04 Python
python3爬虫中引用Queue的实例讲解
Nov 24 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生成圆角图片的方法
2015/04/07 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
php中的登陆login实例代码
2016/06/20 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
js 字符串转化成数字的代码
2011/06/29 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
详解jQuery中的事件
2016/12/14 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
2019/04/13 Javascript
在Uni中使用Vue的EventBus总线机制操作
2020/07/31 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
python 多线程应用介绍
2012/12/19 Python
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
华为慧通面试题
2012/09/11 面试题
美术专业学生个人自我评价
2013/09/19 职场文书
护理专业应届毕业生推荐信
2013/11/15 职场文书
小学二年级学生评语
2014/04/21 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
体育委员竞选稿
2015/11/21 职场文书
高考升学宴主持词
2019/06/21 职场文书
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA