mirror of
https://github.com/Napsty/check_esxi_hardware.git
synced 2026-02-06 15:15:20 +01:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad1e56c44c | ||
|
|
ecfb411b05 | ||
|
|
aaaa2fc1e3 | ||
|
|
0149512f50 | ||
|
|
d03a586ddc | ||
|
|
bdea961ea0 | ||
|
|
676b724b37 | ||
|
|
16a9ce1f36 | ||
|
|
602651d3e5 | ||
|
|
e63f9fee6a |
@@ -22,7 +22,7 @@
|
|||||||
# Copyright (c) 2008 David Ligeret
|
# Copyright (c) 2008 David Ligeret
|
||||||
# Copyright (c) 2009 Joshua Daniel Franklin
|
# Copyright (c) 2009 Joshua Daniel Franklin
|
||||||
# Copyright (c) 2010 Branden Schneider
|
# Copyright (c) 2010 Branden Schneider
|
||||||
# Copyright (c) 2010-2025 Claudio Kuenzler
|
# Copyright (c) 2010-2024 Claudio Kuenzler
|
||||||
# Copyright (c) 2010 Samir Ibradzic
|
# Copyright (c) 2010 Samir Ibradzic
|
||||||
# Copyright (c) 2010 Aaron Rogers
|
# Copyright (c) 2010 Aaron Rogers
|
||||||
# Copyright (c) 2011 Ludovic Hutin
|
# Copyright (c) 2011 Ludovic Hutin
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
# Copyright (c) 2015 Andreas Gottwald
|
# Copyright (c) 2015 Andreas Gottwald
|
||||||
# Copyright (c) 2015 Stanislav German-Evtushenko
|
# Copyright (c) 2015 Stanislav German-Evtushenko
|
||||||
# Copyright (c) 2015 Stefan Roos
|
# Copyright (c) 2015 Stefan Roos
|
||||||
# Copyright (c) 2018,2025 Peter Newman
|
# Copyright (c) 2018 Peter Newman
|
||||||
# Copyright (c) 2020 Luca Berra
|
# Copyright (c) 2020 Luca Berra
|
||||||
# Copyright (c) 2022 Marco Markgraf
|
# Copyright (c) 2022 Marco Markgraf
|
||||||
#
|
#
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
# https://www.claudiokuenzler.com/monitoring-plugins/check_esxi_hardware.php
|
# https://www.claudiokuenzler.com/monitoring-plugins/check_esxi_hardware.php
|
||||||
#
|
#
|
||||||
#@---------------------------------------------------
|
#@---------------------------------------------------
|
||||||
#@ History / ChangeLog
|
#@ History
|
||||||
#@---------------------------------------------------
|
#@---------------------------------------------------
|
||||||
#@ Date : 20080820
|
#@ Date : 20080820
|
||||||
#@ Author : David Ligeret
|
#@ Author : David Ligeret
|
||||||
@@ -292,21 +292,12 @@
|
|||||||
#@ Author : Claudio Kuenzler
|
#@ Author : Claudio Kuenzler
|
||||||
#@ Reason : Fix bug when missing S/N (issue #68)
|
#@ Reason : Fix bug when missing S/N (issue #68)
|
||||||
#@---------------------------------------------------
|
#@---------------------------------------------------
|
||||||
#@ Date : 20241129
|
#@ Date : 20241025
|
||||||
#@ Author : Claudio Kuenzler
|
#@ Author : Claudio Kuenzler
|
||||||
#@ Reason : Fix pkg_resources deprecation warning
|
#@ Reason : Fix pkg_resources deprecation warning
|
||||||
# Remove python2 compatibility
|
# Remove python2 compatibility
|
||||||
# Remove pywbem 0.7.0 compatibility
|
# Remove pywbem 0.7.0 compatibility
|
||||||
#@---------------------------------------------------
|
#@---------------------------------------------------
|
||||||
#@ Date : 20250221
|
|
||||||
#@ Author : Claudio Kuenzler
|
|
||||||
#@ Reason : Update to newer pywbem exception call, catch HTTPError
|
|
||||||
#@ Attn : Requires 'packaging' Python module from now on!
|
|
||||||
#@---------------------------------------------------
|
|
||||||
#@ Date : 20250716
|
|
||||||
#@ Author : Peter Newman
|
|
||||||
#@ Reason : Adjust exit code -1 to 3 (Nagios UNKNOWN)
|
|
||||||
#@---------------------------------------------------
|
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
@@ -314,9 +305,8 @@ import pywbem
|
|||||||
import re
|
import re
|
||||||
import json
|
import json
|
||||||
from optparse import OptionParser,OptionGroup
|
from optparse import OptionParser,OptionGroup
|
||||||
from packaging.version import Version
|
|
||||||
|
|
||||||
version = '20250716'
|
version = '20241025'
|
||||||
|
|
||||||
NS = 'root/cimv2'
|
NS = 'root/cimv2'
|
||||||
hosturl = ''
|
hosturl = ''
|
||||||
@@ -611,14 +601,14 @@ def getopts() :
|
|||||||
if len(sys.argv) < 2:
|
if len(sys.argv) < 2:
|
||||||
print("no parameters specified\n")
|
print("no parameters specified\n")
|
||||||
parser.print_help()
|
parser.print_help()
|
||||||
sys.exit(3)
|
sys.exit(-1)
|
||||||
# if first argument starts with 'https://' we have old-style parameters, so handle in old way
|
# if first argument starts with 'https://' we have old-style parameters, so handle in old way
|
||||||
if re.match("https://",sys.argv[1]):
|
if re.match("https://",sys.argv[1]):
|
||||||
# check input arguments
|
# check input arguments
|
||||||
if len(sys.argv) < 5:
|
if len(sys.argv) < 5:
|
||||||
print("too few parameters\n")
|
print("too few parameters\n")
|
||||||
parser.print_help()
|
parser.print_help()
|
||||||
sys.exit(3)
|
sys.exit(-1)
|
||||||
if len(sys.argv) > 5 :
|
if len(sys.argv) > 5 :
|
||||||
if sys.argv[5] == "verbose" :
|
if sys.argv[5] == "verbose" :
|
||||||
verbose = True
|
verbose = True
|
||||||
@@ -636,7 +626,7 @@ def getopts() :
|
|||||||
if not options.__dict__[m]:
|
if not options.__dict__[m]:
|
||||||
print("mandatory option '" + m + "' not defined. read usage in help.\n")
|
print("mandatory option '" + m + "' not defined. read usage in help.\n")
|
||||||
parser.print_help()
|
parser.print_help()
|
||||||
sys.exit(3)
|
sys.exit(-1)
|
||||||
|
|
||||||
hostname=options.host.lower()
|
hostname=options.host.lower()
|
||||||
# if user has put "https://" in front of hostname out of habit, do the right thing
|
# if user has put "https://" in front of hostname out of habit, do the right thing
|
||||||
@@ -747,18 +737,6 @@ verboseoutput("Found pywbem version "+pywbemversion)
|
|||||||
verboseoutput("Connection to "+hosturl)
|
verboseoutput("Connection to "+hosturl)
|
||||||
wbemclient = pywbem.WBEMConnection(hosturl, (user,password), NS, no_verification=True)
|
wbemclient = pywbem.WBEMConnection(hosturl, (user,password), NS, no_verification=True)
|
||||||
|
|
||||||
# Backward compatibility for older pywbem exceptions, big thanks to Claire M.!
|
|
||||||
if Version(pywbemversion) >= Version("1.0.0"):
|
|
||||||
verboseoutput("pywbem is 1.0.0 or newer")
|
|
||||||
import pywbem._cim_operations as PywbemCimOperations
|
|
||||||
import pywbem._cim_http as PywbemCimHttp
|
|
||||||
import pywbem._exceptions as PywbemExceptions
|
|
||||||
else:
|
|
||||||
verboseoutput("pywbem is older than 1.0.0")
|
|
||||||
import pywbem.cim_operations as PywbemCimOperations
|
|
||||||
import pywbem.cim_http as PywbemCimHttp
|
|
||||||
import pywbem.exceptions as PywbemExceptions
|
|
||||||
|
|
||||||
# Add a timeout for the script. When using with Nagios, the Nagios timeout cannot be < than plugin timeout.
|
# Add a timeout for the script. When using with Nagios, the Nagios timeout cannot be < than plugin timeout.
|
||||||
if on_windows == False and timeout > 0:
|
if on_windows == False and timeout > 0:
|
||||||
signal.signal(signal.SIGALRM, handler)
|
signal.signal(signal.SIGALRM, handler)
|
||||||
@@ -776,7 +754,7 @@ ExitMsg = ""
|
|||||||
if vendor=='auto':
|
if vendor=='auto':
|
||||||
try:
|
try:
|
||||||
c=wbemclient.EnumerateInstances('CIM_Chassis')
|
c=wbemclient.EnumerateInstances('CIM_Chassis')
|
||||||
except PywbemCimOperations.CIMError as args:
|
except pywbem.cim_operations.CIMError as args:
|
||||||
if ( args[1].find('Socket error') >= 0 ):
|
if ( args[1].find('Socket error') >= 0 ):
|
||||||
print("UNKNOWN: {}".format(args))
|
print("UNKNOWN: {}".format(args))
|
||||||
sys.exit (ExitUnknown)
|
sys.exit (ExitUnknown)
|
||||||
@@ -785,15 +763,11 @@ if vendor=='auto':
|
|||||||
sys.exit (ExitUnknown)
|
sys.exit (ExitUnknown)
|
||||||
else:
|
else:
|
||||||
verboseoutput("Unknown CIM Error: %s" % args)
|
verboseoutput("Unknown CIM Error: %s" % args)
|
||||||
except PywbemExceptions.ConnectionError as args:
|
except pywbem._exceptions.ConnectionError as args:
|
||||||
GlobalStatus = ExitUnknown
|
GlobalStatus = ExitUnknown
|
||||||
print("UNKNOWN: {}".format(args))
|
print("UNKNOWN: {}".format(args))
|
||||||
sys.exit (GlobalStatus)
|
sys.exit (GlobalStatus)
|
||||||
except PywbemExceptions.HTTPError as args:
|
except pywbem.cim_http.AuthError as arg:
|
||||||
GlobalStatus = ExitUnknown
|
|
||||||
print("UNKNOWN: {}".format(args))
|
|
||||||
sys.exit (GlobalStatus)
|
|
||||||
except PywbemCimHttp.AuthError as arg:
|
|
||||||
verboseoutput("Global exit set to UNKNOWN")
|
verboseoutput("Global exit set to UNKNOWN")
|
||||||
GlobalStatus = ExitUnknown
|
GlobalStatus = ExitUnknown
|
||||||
print("UNKNOWN: Authentication Error")
|
print("UNKNOWN: Authentication Error")
|
||||||
@@ -815,7 +789,7 @@ for classe in ClassesToCheck :
|
|||||||
verboseoutput("Check classe "+classe)
|
verboseoutput("Check classe "+classe)
|
||||||
try:
|
try:
|
||||||
instance_list = wbemclient.EnumerateInstances(classe)
|
instance_list = wbemclient.EnumerateInstances(classe)
|
||||||
except PywbemCimOperations.CIMError as args:
|
except pywbem._cim_operations.CIMError as args:
|
||||||
if ( args[1].find('Socket error') >= 0 ):
|
if ( args[1].find('Socket error') >= 0 ):
|
||||||
print("UNKNOWN: {}".format(args))
|
print("UNKNOWN: {}".format(args))
|
||||||
sys.exit (ExitUnknown)
|
sys.exit (ExitUnknown)
|
||||||
@@ -824,15 +798,11 @@ for classe in ClassesToCheck :
|
|||||||
sys.exit (ExitUnknown)
|
sys.exit (ExitUnknown)
|
||||||
else:
|
else:
|
||||||
verboseoutput("Unknown CIM Error: %s" % args)
|
verboseoutput("Unknown CIM Error: %s" % args)
|
||||||
except PywbemExceptions.ConnectionError as args:
|
except pywbem._exceptions.ConnectionError as args:
|
||||||
GlobalStatus = ExitUnknown
|
GlobalStatus = ExitUnknown
|
||||||
print("UNKNOWN: {}".format(args))
|
print("UNKNOWN: {}".format(args))
|
||||||
sys.exit (GlobalStatus)
|
sys.exit (GlobalStatus)
|
||||||
except PywbemExceptions.HTTPError as args:
|
except pywbem._cim_http.AuthError as arg:
|
||||||
GlobalStatus = ExitUnknown
|
|
||||||
print("UNKNOWN: {}".format(args))
|
|
||||||
sys.exit (GlobalStatus)
|
|
||||||
except PywbemCimHttp.AuthError as arg:
|
|
||||||
verboseoutput("Global exit set to UNKNOWN")
|
verboseoutput("Global exit set to UNKNOWN")
|
||||||
GlobalStatus = ExitUnknown
|
GlobalStatus = ExitUnknown
|
||||||
print("UNKNOWN: Authentication Error")
|
print("UNKNOWN: Authentication Error")
|
||||||
|
|||||||
Reference in New Issue
Block a user