#!/usr/bin/python26
#filename:check_traffic.py
#the python script function  for monitoring network traffic.
'''
--help

example:

python26  check_traffic.py dev in out checknum

python26  check_traffic.py eth0 30000 30000 checknum

the limit unit is KB
'''

import sys,os,time
import psutil

if len(sys.argv) != 5:
    print __doc__
    sys.exit(3)
dev=sys.argv[1]
value_in=int(sys.argv[2])
value_out=int(sys.argv[3])
lineNum=sys.argv[4]
tmpFile=dev+"_traffic.log"
unit="KB/s"

###get script pwd
binPwd=os.path.dirname(os.path.realpath(__file__))
os.chdir(binPwd)
###get current  network traffic
def getCurrentTraffic(dev):
    device=dev
    current=psutil.network_io_counters(pernic=True)
    time.sleep(1)
    current1=psutil.network_io_counters(pernic=True)
    c_send=current[device][0]
    c_rev=current[device][1]
    sc_send=current1[device][0]
    sc_rev=current1[device][1]
    send=(sc_send-c_send)/1024
    rev=(sc_rev-c_rev)/1024
    witeLog(send,rev)
    return send,rev

###write log file the network traffic
def witeLog(send,rev):
    now=time.strftime("%Y-%m-%d %X")
    f=file(tmpFile,'a')
    f.write("%s,%s,%s\n" % (rev,send,now))
    f.close()
    
def isTraffic():
    X=[]
    Y=[]
    if len(open(tmpFile,'rU').readlines()) < int(lineNum):
        print "The check num too less."
        sys.exit(0)
    lastData=os.popen("cat "+tmpFile+"|tail -n " + lineNum)
    for tmp in lastData.readlines():
        X.append(int(tmp.split(",")[0].strip('\n')))
        Y.append(int(tmp.split(",")[1].strip('\n')))
    X.sort()
    Y.sort()
    return X[0],Y[0]

###check tmpFile size
def isTmpFileSzie():
    os.system("touch %s" % tmpFile)
    if os.path.getsize(tmpFile)/1024 > 65535:
        os.remove(tmpFile)

###check network traffic the value of is normal
def monitor():
    getCurrentTraffic(dev)
    isCheck=isTraffic()
    if isCheck[0] < value_in and isCheck[1] < value_out:
        print "network traffic ok, in: %s %s out: %s %s" % (isCheck[0],unit,isCheck[1],unit)
        sys.exit(0)
    elif isCheck[0] >= value_in or isCheck[1] >= value_out:
        print "network traffic warning, in: %s %s out: %s %s" % (isCheck[0],unit,isCheck[1],unit)
        sys.exit(1)
    else:
        print "UNKNOWN."
         sys.exit(3)

def main():
        isTmpFileSzie()
        monitor()

if __name__=='__main__':
    main()

网卡监控脚本--nagios的更多相关文章

  1. centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课

    centos   shell编程6一些工作中实践脚本   nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志  直接送给bc做计算  gzip  innobacku ...

  2. nagios和zabbix自定义监控脚本

    一. 自定义nagios监控脚本1. 在客户端上创建脚本/usr/local/nagios/libexec/check_disk.shvim  /usr/local/nagios/libexec/ch ...

  3. [工具开发] keepalived使用nagios监控脚本

    最近在做开发和办公环境的高可用,采用的是keepalived:keepalived基于Linux内核支持的LVS,既能实现高可用,又能实现负载均衡,非常实用. keepalived监控服务状态时可以用 ...

  4. Linux下针对服务器网卡流量和磁盘的监控脚本

    1)实时监控网卡流量的通用脚本: [root@ceph-node1 ~]# cat /root/net_monit.sh #!/bin/bash PATH=/bin:/usr/bin:/sbin:/u ...

  5. Python 监控脚本(硬盘、cpu、内存、网卡、进程)

    #磁盘使用率disk = psutil.disk_partitions()for i in disk:    print "磁盘:%s   分区格式:%s"%(i.device,i ...

  6. 自定义nagios监控脚本---磁盘检测

    自定义nagios监控脚本---磁盘检测 1. 在客户端上创建脚本/usr/local/nagios/libexec/check_disk.shvim /usr/local/nagios/libexe ...

  7. nginx+keepalived主辅切换(监控脚本在keepalived.conf中执行)

    以前写过一篇,nginx+keepalived 双机互备的文章,写那篇文章的时候没有想过如果apache或者nginx 挂了,而 keepalived 或者 机器没有死,那么主辅是不会切换的,今天就研 ...

  8. 【不积跬步,无以致千里】五个常用的Linux监控脚本代码

    为大家提供五个常用Linux监控脚本(查看主机网卡流量.系统状况监控.监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告.监控CPU和内存的使用情况.全方位监控主机),有需要的朋友不妨看 ...

  9. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...

随机推荐

  1. 大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作【华为云技术分享】

    网站登录 现在各大平台在反爬虫功能上,可谓花样繁多.总结下来按照破解成功率排名,最高的是滑动解锁.其次是验证码数字.之后是一次点击对应的汉字,最后是想12306之前那种反人类的让你说那些是奶糖吧,哈哈 ...

  2. pod的yaml例子

    apiVersion: apps/v1beta2 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selecto ...

  3. 让你的 vs code 跑在云上,用手机浏览器就能写代码

    让你的vs code 跑在云服务器上 在B站上看到一个视频Run VS Code in the browser with massive computing resources(教你如何配置一个云ID ...

  4. 北理工机器人队RM视觉组学习参考汇总(持续更新中)

    欢迎大家有意加入北理工机器人队参与到视觉组的工作中.在大家能够正式作为队员参与到视觉组的准备工作之前,北理机器人队需要对各位进行培训.这篇文章主要面向有志于参加机器人队视觉组的同学.同时,欢迎所有对相 ...

  5. 进程、线程、轻量级进程、协程与 go 的 goroutine

    本文内容 进程 线程 协程 Go 中的 goroutine 参考资料 最近,看一些文章,提到“协程”的概念,心想,进程,线程,协程,前两个很容易,任何一本关于操作系统的书都有说,开发时也经常用,但是协 ...

  6. vue Router——基础篇

    vue--Router简介 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用. vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路 ...

  7. ES6 入门系列 (三) 尾递归

    递归我们不陌生, 那什么是尾递归呢? 为什么要用尾递归呢? 尾递归怎么用呢? 带着这三个问题我们来了解它, 我们知道递归非常耗费内存,一不小心就会发生‘栈溢出’, 相信你一定遇到过这个错误: stac ...

  8. Qt Creator清除最近工程历史信息

    Qt Creator清除最近工程历史信息 随着不断打开和关闭qt工程,欢迎->Projects->Recent projects下的历史工程信息越来越多,是该清理一下了,强迫症会追求干净一 ...

  9. 路由拨号上网过Drcom

    学校校园宽带是Drcom认证的 ,一人一号一设备.用着难受就决定想破解. 开始想着用软路由,但是感觉对电脑不友好,所以就决定买个路由器来搞. 一丶环境说明 学校使用的是Drcom 6.0 P版客户端. ...

  10. Python学习日记(四十一) Mysql数据库篇 九

    前言 索引的主要作用是起到约束和加速查找,ORM框架(sqlalchemy)是用类和对象对数据库进行操作 索引的种类 按种类去分 1.普通索引:能够加速查找 2.主键索引:能够加速查找.不能为空.不能 ...