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的源码来解析Python下的freeblock
May 11 Python
Python实现的排列组合计算操作示例
Oct 13 Python
Python中装饰器高级用法详解
Dec 25 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
python实现小球弹跳效果
May 10 Python
Python中判断子串存在的性能比较及分析总结
Jun 23 Python
Python 获取windows桌面路径的5种方法小结
Jul 15 Python
Python 模拟动态产生字母验证码图片功能
Dec 24 Python
浅谈django channels 路由误导
May 28 Python
Python 解析库json及jsonpath pickle的实现
Aug 17 Python
opencv深入浅出了解机器学习和深度学习
Mar 17 Python
Pygame游戏开发之太空射击实战敌人精灵篇
Aug 05 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
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
PHP无限分类(树形类)
2013/09/28 PHP
php打包网站并在线压缩为zip
2016/02/13 PHP
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
Angular用来控制元素的展示与否的原生指令介绍
2015/01/07 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
javascript实现电脑和手机版样式切换
2017/11/10 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
python 中的列表解析和生成表达式
2011/03/10 Python
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
Python采用Django开发自己的博客系统
2020/09/29 Python
python写一个md5解密器示例
2018/02/23 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
python读取并写入mat文件的方法
2019/07/12 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
英国健身超市:Fitness Superstore
2019/06/17 全球购物
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
中学生学习保证书
2015/02/26 职场文书
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS