精密空调DataMate3000环境监控脚本
发布时间:2020-05-25 00:49:47 所属栏目:Python 来源:互联网
导读:精密空调DataMate3000环境监控脚本
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 #!/usr/bin/env python
#coding:utf-8
"""
Author: Edward.Zhou -- <[emailprotected]>
Purpose: 监控精密空调DataMate3000状态
Created: 2015年05月02日
"""
import unittest
import netsnmp
import sys
import argparse
#DataMate3000MIB库
DaTaMate3000MIB = {
'SmartOutput': {
'Temperature': '.1.3.6.1.4.1.13400.2.10.1.2.2.1',#温度
'Humidity': '.1.3.6.1.4.1.13400.2.10.1.2.2.2',#湿度
},'BaseStatus': {
#'''Status: unknown ( 1 ),ok ( 2 ),lostCommunication ( 3 ),notEstablished ( 4 )'''
'Communication': '.1.3.6.1.4.1.13400.2.10.1.3.1.1',#通信状态
},'SmartStatus': {
#'''Status: #unknown ( 1 ),on ( 2 ),off ( 3 )'''
'UnitOnOff': '.1.3.6.1.4.1.13400.2.10.1.3.2.1',#开关机
'MainFan': '.1.3.6.1.4.1.13400.2.10.1.3.2.2',#风机
'CoolMode': '.1.3.6.1.4.1.13400.2.10.1.3.2.3',#制冷
'HeatMode': '.1.3.6.1.4.1.13400.2.10.1.3.2.4',#加热
'HumidifyMode': '.1.3.6.1.4.1.13400.2.10.1.3.2.5',#加湿
'DehumidifyMode': '.1.3.6.1.4.1.13400.2.10.1.3.2.6',#除湿
'HighPressure': '.1.3.6.1.4.1.13400.2.10.1.3.2.7',#高压告警
'LowPressure': '.1.3.6.1.4.1.13400.2.10.1.3.2.8',#低压告警
'HighTemperature': '.1.3.6.1.4.1.13400.2.10.1.3.2.9',#高温告警
'LowTemperature': '.1.3.6.1.4.1.13400.2.10.1.3.2.10',#低温告警
'HighHumidify': '.1.3.6.1.4.1.13400.2.10.1.3.2.11',#高湿告警
'LowHumidify': '.1.3.6.1.4.1.13400.2.10.1.3.2.12',#低湿告警
'PowerFailure': '.1.3.6.1.4.1.13400.2.10.1.3.2.13',#电源故障告警
'ShortCycle': '.1.3.6.1.4.1.13400.2.10.1.3.2.14',#短周期告警
'CustomAlarm1': '.1.3.6.1.4.1.13400.2.10.1.3.2.15',#自定义告警1
'CustomAlaarm2': '.1.3.6.1.4.1.13400.2.10.1.3.2.16',#自定义告警2
'MainFanServiceRequired': '.1.3.6.1.4.1.13400.2.10.1.3.2.17',#主风机维护请求
'HumidifierServiceRequired': '.1.3.6.1.4.1.13400.2.10.1.3.2.18',#加湿器维护请求
'FilterServiceRequired': '.1.3.6.1.4.1.13400.2.10.1.3.2.19',#过滤网维护请求
'CoilFroze': '.1.3.6.1.4.1.13400.2.10.1.3.2.20',#盘管冻结
'HumidifierFailure': '.1.3.6.1.4.1.13400.2.10.1.3.2.21',#加湿器故障
'SensorBoardFailure': '.1.3.6.1.4.1.13400.2.10.1.3.2.22',#传感器板故障
'DischargeTemperatureFailure': '.1.3.6.1.4.1.13400.2.10.1.3.2.23',#排气温度故障
'PowerLost': '.1.3.6.1.4.1.13400.2.10.1.3.2.24',#电源丢失
'InnerCommFailure': '.1.3.6.1.4.1.13400.2.10.1.3.2.25',#空调通讯状态
},}
#设置返回状态码
'''
ST_OK=0 #正常
ST_WR=1 #错误
ST_CR=2 #严重警告
ST_UK=3 #未知
'''
#采用snmp协议获取相应OID值
def snmpGet(oid,version = 1,community = 'public',host = 'localhost'):
try:
result = netsnmp.snmpwalk(oid,Version = version,Community = community,DestHost = host)
except Exception,err:
print err
sys.exit()
if result:
return result[0]
else:
return None
def main():
parser = argparse.ArgumentParser(description='DataMate 3000 status check')
parser.add_argument('-i','--host',dest='host',nargs = '?',default= 'localhost',required = False,help='The specified monitoring DataMate 3000 IP or Host')
parser.add_argument('-v','--version',dest='version',default= 1,type = int,help='The specified snmp version')
parser.add_argument('-C','--Community',dest='Community',default= 'public',help='The specified snmp community')
parser.add_argument('-V','--Variable',dest = 'Variable',default = 'Temperature',required = True,choices = ['Temperature','Humidity'],help = 'The specified check object' )
parser.add_argument('-w','--warning',dest = 'warning',default = None,help = 'Threshold which will result in a warning status')
parser.add_argument('-c','--critical',dest = 'critical',help = 'Threshold which will result in a critical status')
args = parser.parse_args()
#检测环境温度
if args.Variable == 'Temperature':
toid = DaTaMate3000MIB['SmartOutput']['Temperature']
_result = snmpGet(toid,args.version,args.Community,args.host)
result = float(_result)
if (result / 10) < args.warning:
print "DataMate 3000 Teamperature is %s ℃,status is ok." % (result / 10)
sys.exit(0)
elif (result / 10) >= args.warning and (result / 10) <= args.critical:
print "DataMate 3000 Teamperature is %s ℃,status is warning." % (result / 10)
sys.exit(1)
elif (result / 10) >= args.critical:
print "DataMate 3000 Teamperature is %s ℃,status is critical." % (result / 10)
sys.exit(2)
else:
print "DataMate 3000 Teamperature is unknown ℃,status is unknown."
sys.exit(3)
#检测环境湿度
if args.Variable == 'Humidity':
hoid = DaTaMate3000MIB['SmartOutput']['Humidity']
_result = snmpGet(hoid,args.host)
result = float(_result)
if result < args.warning:
print "DataMate 3000 Humidity is %s %%RH,status is ok." % result
sys.exit(0)
elif result >= args.warning and result <= args.critical:
print "DataMate 3000 Humidity is %s %%RH,status is warning." % result
sys.exit(1)
elif result >= args.critical:
print "DataMate 3000 Humidity is %s %%RH,status is critical." % result
sys.exit(2)
else:
print "DataMate 3000 Humidity is unknown %%RH,status is unknown."
sys.exit(3)
if __name__ == '__main__':
main()
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
