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中for循环详解
Jan 17 Python
python操作mysql中文显示乱码的解决方法
Oct 11 Python
使用Python实现下载网易云音乐的高清MV
Mar 16 Python
浅谈Python 对象内存占用
Jul 15 Python
利用Python实现网络测试的脚本分享
May 26 Python
CentOS下使用yum安装python-pip失败的完美解决方法
Aug 16 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 Python
浅谈python实现Google翻译PDF,解决换行的问题
Nov 28 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
树莓派与PC端在局域网内运用python实现即时通讯
Jun 22 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 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批量生成随机用户名
2008/07/10 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
python多线程操作实例
2014/11/21 Python
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
详解numpy的argmax的具体使用
2019/05/27 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
Aurora London官网:奢华、负担得起的皮革手袋
2020/08/01 全球购物
个性大学生自我评价
2013/12/04 职场文书
学术会议邀请函范文
2014/01/22 职场文书
2014教师研修学习体会
2014/07/08 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
英文自荐信范文
2015/03/25 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书
sql中mod()函数取余数的用法
2021/05/29 SQL Server
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫