#!/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. 【题解】邻值查找 [CH1301]

    [题解]邻值查找 [CH1301] 传送门:邻值查找 \([CH1301]\) \([AcWing136]\) [题目描述] 给定一个长度为 \(n\) 的序列 \(A\),\(A\) 中的数各不相同 ...

  2. aspx页面,后端通过Attributes.Add给textbox添加事件时,传参失效问题。

    测试一:------------------------------------------------------------------------------------------------ ...

  3. Newtonsoft.Json使用技巧

    本篇将为大家介绍Newtonsoft.Json的一些高级用法,可以修改很少的代码解决上述问题. 阅读目录 Newtonsoft.Json介绍 基本用法 高级用法 总结 回到顶部 Newtonsoft. ...

  4. Python: 把txt文件转换成csv

    最近在项目上需要批量把txt文件转成成csv文件格式,以前是手动打开excel文件,然后导入txt来生产csv文件,由于这已经变成每周需要做的事情,决定用python自动化脚本来实现,思路: 读取文件 ...

  5. vue 强制刷新 demo 神器

    this.$forceUpdate() /*关键句,强制更新dom*/

  6. 前后端分离项目Vue+drf开发部署总结

    思维导图xmind文件:https://files-cdn.cnblogs.com/files/benjieming/%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A ...

  7. logger.info占位符的使用

    {}表示占位符,使用方法如下: package org.pine.controller; import javax.annotation.Resource; import org.pine.servi ...

  8. linux安装包制作

    1. 常见安装包 打包或压缩文件tar,zip,gz等,一般解压后即可 管理工具的deb,rpm等.这类安装文件可以通过第三方的命令安装 (apt和yum) .bin类,其实就是把sh和zip打包为b ...

  9. 解决samba共享虚拟机第二块磁盘的难题

    linux下使用samba共享文件到window下已经实现过了   点此链接 但是共享时磁盘空间是有限的,如果空间使用完了该怎么处理呢?这是个头疼的问题,不知道samba支持不支持共享第二个文件夹,由 ...

  10. LocalDateTime的一些用法

    包括获取当前时间,指定特定时间.进行时间的加减等 LocalDateTime localDateTime3 = LocalDateTime.now(); LocalDate.now(); LocalT ...