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 28 Python
python实现web方式logview的方法
Aug 10 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
python实现多线程的方式及多条命令并发执行
Jun 07 Python
解决Python 使用h5py加载文件,看不到keys()的问题
Feb 08 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
python下载卫星云图合成gif的方法示例
Feb 18 Python
python 获取当前目录下的文件目录和文件名实例代码详解
Mar 10 Python
如何写python的配置文件
Jun 07 Python
python开发一款翻译工具
Oct 10 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 Python
pycharm 配置svn的图文教程(手把手教你)
Jan 15 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设置允许大文件上传示例代码
2014/03/10 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
一段利用WSH获取登录时间的jscript代码
2008/05/11 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
angularjs创建弹出框实现拖动效果
2020/08/25 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
python nmap实现端口扫描器教程
2020/05/28 Python
python系列 文件操作的代码
2019/10/06 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
大学生职业生涯设计书
2014/01/02 职场文书
工作表现自我评价
2014/02/08 职场文书
民生工作实施方案
2014/05/31 职场文书
教师节倡议书
2014/08/30 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
领导欢迎词范文
2015/01/26 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
大学生党课心得体会
2016/01/07 职场文书
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js