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 相关文章推荐
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
Apr 09 Python
python实现对一个完整url进行分割的方法
Apr 29 Python
python实现飞机大战
Sep 11 Python
学生信息管理系统python版
Oct 17 Python
Python3中在Anaconda环境下安装basemap包
Oct 21 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
Python微信操控itchat的方法
May 31 Python
解决python执行不输出系统命令弹框的问题
Jun 24 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
python 导入数据及作图的实现
Dec 03 Python
keras导入weights方式
Jun 12 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
Oct 20 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中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
基于jQuery的弹出框插件
2012/03/18 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
python实现bitmap数据结构详解
2014/02/17 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
python带参数打包exe及调用方式
2019/12/21 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
python实现猜拳游戏
2020/03/04 Python
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
装潢设计专业推荐信模板
2013/11/26 职场文书
校园新闻广播稿
2014/01/10 职场文书
纺织工程专业个人求职信范文
2014/01/27 职场文书
地理教师岗位职责
2014/03/16 职场文书
反邪教警示教育方案
2014/05/13 职场文书
英文慰问信
2015/02/14 职场文书
小学运动会宣传稿
2015/07/23 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android