Skip to content
Snippets Groups Projects
Commit 509696d8 authored by root's avatar root
Browse files

check_ups_eaton converted to Python3 with easysnmp library.

parent 8288c98d
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/python
#!/usr/bin/python3
# Author: Devon Merner (dmerner)
# Date: November 5th, 2021
......@@ -23,7 +23,8 @@ PERFDATA = ""
import sys
import argparse
import netsnmp
from easysnmp import Session
from easysnmp.exceptions import *
# Basic OIDs
xupsIdentModel=".1.3.6.1.2.1.33.1.1.2.0"
......@@ -118,7 +119,21 @@ args = {
def FtoC(temp):
return (temp - 32) * 5/9
systemModel = netsnmp.snmpget(netsnmp.Varbind(xupsIdentModel), **args)[0]
def snmpGet(oid):
try:
return session.get(oid).value
except EasySNMPNoSuchNameError:
return None
def snmpWalk(oid):
try:
return session.walk(oid)
except EasySNMPNoSuchNameError:
return None
session = Session(hostname=options.host, community=options.community, version=int(options.version))
systemModel = snmpGet(xupsIdentModel)
if systemModel is None:
print(STATE_LABEL[STATE_UNKNOWN] + " - " + options.host + " did not respond to the SNMP query.")
......@@ -126,40 +141,39 @@ if systemModel is None:
OUTPUT_TEXT += " (" + str(systemModel) + ")"
temperatureOutput=netsnmp.snmpget(netsnmp.Varbind(xupsEnvAmbientTemp), **args)[0]
temperatureOutput=session.get(xupsEnvAmbientTemp).value
if temperatureOutput:
envTemperature=float(temperatureOutput)
xupsBatteryAbmStatus=int(netsnmp.snmpget(netsnmp.Varbind(xupsBatteryAbmStatus), **args)[0])
xupsBatteryStatus=int(netsnmp.snmpget(netsnmp.Varbind(xupsBatteryStatus), **args)[0])
xupsBatteryLastReplacedDate=str(netsnmp.snmpget(netsnmp.Varbind(xupsBatteryLastReplacedDate), **args)[0])
xupsBatCapacity=float(netsnmp.snmpget(netsnmp.Varbind(xupsBatCapacity), **args)[0])
xupsBatTimeRemaining=int(netsnmp.snmpget(netsnmp.Varbind(xupsBatTimeRemaining), **args)[0])
xupsBatVoltage=int(netsnmp.snmpget(netsnmp.Varbind(xupsBatVoltage), **args)[0])
xupsBatCurrent=int(netsnmp.snmpget(netsnmp.Varbind(xupsBatCurrent), **args)[0])
xupsBatteryAbmStatus=int(snmpGet(xupsBatteryAbmStatus))
xupsBatteryStatus=int(snmpGet(xupsBatteryStatus))
xupsBatteryLastReplacedDate=str(snmpGet(xupsBatteryLastReplacedDate))
xupsBatCapacity=float(snmpGet(xupsBatCapacity))
xupsBatTimeRemaining=int(snmpGet(xupsBatTimeRemaining))
xupsBatVoltage=int(snmpGet(xupsBatVoltage))
xupsBatCurrent=int(snmpGet(xupsBatCurrent))
# Determine the amount of input phases
xupsInputPhase=netsnmp.snmpwalk(netsnmp.Varbind(xupsInputPhase), **args)
xupsInputFrequency=int(netsnmp.snmpget(netsnmp.Varbind(xupsInputFrequency), **args)[0]) / 10 # 0.1 Hertz
xupsInputSource=int(netsnmp.snmpget(netsnmp.Varbind(xupsInputSource), **args)[0])
xupsInputPhase=snmpWalk(xupsInputPhase)
xupsInputFrequency=int(snmpGet(xupsInputFrequency)) / 10 # 0.1 Hertz
xupsInputSource=int(snmpGet(xupsInputSource))
# Determine the amount of output phases
xupsOutputPhase=netsnmp.snmpwalk(netsnmp.Varbind(xupsOutputPhase), **args)
xupsOutputSource=int(netsnmp.snmpget(netsnmp.Varbind(xupsOutputSource), **args)[0])
xupsOutputPhase=snmpWalk(xupsOutputPhase)
xupsOutputSource=int(snmpGet(xupsOutputSource))
# Dynamic input variables
xupsInputVoltage=netsnmp.snmpwalk(netsnmp.Varbind(xupsInputVoltage), **args)
xupsInputCurrent=netsnmp.snmpwalk(netsnmp.Varbind(xupsInputCurrent), **args)
xupsInputWatts=netsnmp.snmpwalk(netsnmp.Varbind(xupsInputWatts), **args)
xupsInputVoltage=snmpWalk(xupsInputVoltage)
xupsInputCurrent=snmpWalk(xupsInputCurrent)
xupsInputWatts=snmpWalk(xupsInputWatts)
# Dynamic output variables
xupsOutputVoltage=netsnmp.snmpwalk(netsnmp.Varbind(xupsOutputVoltage), **args)
xupsOutputCurrent=netsnmp.snmpwalk(netsnmp.Varbind(xupsOutputCurrent), **args)
xupsOutputWatts=netsnmp.snmpwalk(netsnmp.Varbind(xupsOutputWatts), **args)
xupsOutputVoltage=snmpWalk(xupsOutputVoltage)
xupsOutputCurrent=snmpWalk(xupsOutputCurrent)
xupsOutputWatts=snmpWalk(xupsOutputWatts)
xupsOutputFrequency=int(netsnmp.snmpget(netsnmp.Varbind(xupsOutputFrequency), **args)[0]) / 10
xupsOutputLoad=float(netsnmp.snmpget(netsnmp.Varbind(xupsOutputLoad), **args)[0])
xupsOutputFrequency=int(snmpGet(xupsOutputFrequency)) / 10
xupsOutputLoad=float(snmpGet(xupsOutputLoad))
# If we can't get an ABM reading, fallback to normal batter status (less accurate)
if (xupsBatteryAbmStatus != 5 and xupsBatteryAbmStatus != 6):
......@@ -192,8 +206,12 @@ if (xupsOutputSource == 4 or xupsOutputSource == 11):
OUTPUT_TEXT += " Capacity: " + str(xupsBatCapacity) + "%"
OUTPUT_TEXT += " Load: " + str(xupsOutputLoad) + "%"
OUTPUT_TEXT += " Runtime: " + str(xupsBatTimeRemaining / 60) + "m"
OUTPUT_TEXT += " Batteries Last Replaced: " + xupsBatteryLastReplacedDate
OUTPUT_TEXT += " Runtime: " + str(round(xupsBatTimeRemaining / 60, 1)) + "m"
if xupsBatteryLastReplacedDate == "None":
OUTPUT_TEXT += " Batteries Last Replaced: N/A"
else:
OUTPUT_TEXT += " Batteries Last Replaced: " + xupsBatteryLastReplacedDate
if temperatureOutput:
OUTPUT_TEXT += " Temperature: " + str(envTemperature) + "C"
......@@ -213,18 +231,18 @@ PERFDATA += " xupsOutputFrequency=" + str(xupsOutputFrequency)
PERFDATA += " xupsOutputLoad=" + str(xupsOutputLoad)
for phase in xupsInputPhase:
PERFDATA += " xupsInputVoltage_Phase-" + phase + "=" + str(xupsInputVoltage[int(phase) - 1])
PERFDATA += " xupsInputVoltage_Phase-" + phase.value + "=" + str(xupsInputVoltage[int(phase.value) - 1].value)
if xupsInputCurrent:
PERFDATA += " xupsInputCurrent_Phase-" + phase + "=" + str(xupsInputCurrent[int(phase) - 1])
PERFDATA += " xupsInputCurrent_Phase-" + phase.value + "=" + str(xupsInputCurrent[int(phase.value) - 1].value)
if xupsInputWatts:
PERFDATA += " xupsInputWatts_Phase-" + phase + "=" + str(xupsInputWatts[int(phase) - 1])
PERFDATA += " xupsInputWatts_Phase-" + phase.value + "=" + str(xupsInputWatts[int(phase.value) - 1].value)
for phase in xupsOutputPhase:
PERFDATA += " xupsOutputVoltage_Phase-" + phase + "=" + str(xupsOutputVoltage[int(phase) - 1])
PERFDATA += " xupsOutputCurrent_Phase-" + phase + "=" + str(xupsOutputCurrent[int(phase) - 1])
PERFDATA += " xupsOutputWatts_Phase-" + phase + "=" + str(xupsOutputWatts[int(phase) - 1])
PERFDATA += " xupsOutputVoltage_Phase-" + phase.value + "=" + str(xupsOutputVoltage[int(phase.value) - 1].value)
PERFDATA += " xupsOutputCurrent_Phase-" + phase.value + "=" + str(xupsOutputCurrent[int(phase.value) - 1].value)
PERFDATA += " xupsOutputWatts_Phase-" + phase.value + "=" + str(xupsOutputWatts[int(phase.value) - 1].value)
PERFDATA += " xupsBatteryAbmStatus=" + str(xupsBatteryAbmStatus)
PERFDATA += " xupsBatteryStatus=" + str(xupsBatteryStatus)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment