first attempt. not live yet
This commit is contained in:
93
Check_scripts/HPE - ILO SNMP monitor.py
Normal file
93
Check_scripts/HPE - ILO SNMP monitor.py
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
__license__ = "MIT"
|
||||||
|
__authors__ = "D.de Kooker <info@dcomputers.nl>"
|
||||||
|
|
||||||
|
"""
|
||||||
|
This script is designed to monitor a HPE ilo using the python pysnmp module
|
||||||
|
|
||||||
|
Returncodes:
|
||||||
|
0 - All OK
|
||||||
|
1 - There is an error message retrieved by the SNMP monitor
|
||||||
|
2 - There is an warning message retrieved by the SNMP monitor
|
||||||
|
|
||||||
|
Command line arguments:
|
||||||
|
python Check_scripts/HPE - ILO SNMP monitor.py {ILO IP} {SNMP Community string}
|
||||||
|
|
||||||
|
Changelog:
|
||||||
|
17-09-2023 - Initial creation of the script using openAI. Script doesn't work yet, returns errors
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import importlib
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# Check if pysnmp is installed
|
||||||
|
try:
|
||||||
|
importlib.import_module('pysnmp')
|
||||||
|
except ImportError:
|
||||||
|
print("pysnmp is not installed. Installing...")
|
||||||
|
|
||||||
|
# Specify the full path to pip based on the Python executable
|
||||||
|
python_exe = sys.executable
|
||||||
|
pip_cmd = f'"{python_exe}" -m pip'
|
||||||
|
|
||||||
|
# Use subprocess to install pysnmp using pip
|
||||||
|
subprocess.run(f'{pip_cmd} install pysnmp', shell=True)
|
||||||
|
|
||||||
|
from pysnmp.hlapi import *
|
||||||
|
|
||||||
|
def snmp_query(target_ip, community_string, oids_to_query):
|
||||||
|
error_occurred = False # Track if any errors occurred
|
||||||
|
|
||||||
|
for name, oid in oids_to_query.items():
|
||||||
|
errorIndication, errorStatus, errorIndex, varBinds = next(
|
||||||
|
getCmd(SnmpEngine(),
|
||||||
|
CommunityData(community_string),
|
||||||
|
UdpTransportTarget((target_ip, 161), timeout=5, retries=5),
|
||||||
|
ContextData(),
|
||||||
|
ObjectType(ObjectIdentity(oid)))
|
||||||
|
)
|
||||||
|
|
||||||
|
if errorIndication:
|
||||||
|
error_occurred = True
|
||||||
|
print(f"Error querying {name}: {errorIndication}")
|
||||||
|
else:
|
||||||
|
for varBind in varBinds:
|
||||||
|
print(f"{name}: {varBind.prettyPrint()}")
|
||||||
|
|
||||||
|
return error_occurred
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description='Monitor HPE server and iLO via SNMP.')
|
||||||
|
parser.add_argument('target_ip', help='iLO IP address')
|
||||||
|
parser.add_argument('community_string', help='SNMP community string')
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
hardware_and_health = {
|
||||||
|
'System Model': '1.3.6.1.2.1.1.1.0',
|
||||||
|
'Serial Number': '1.3.6.1.4.1.232.2.2.2.1.9.1.3.2.0',
|
||||||
|
'Asset Tag': '1.3.6.1.4.1.232.2.2.2.1.9.1.3.3.0',
|
||||||
|
# 'CPU Usage': '1.3.6.1.4.1.232.11.2.4.1.0',
|
||||||
|
# 'Memory Usage': '1.3.6.1.4.1.232.11.2.11.1.0',
|
||||||
|
'Network Interfaces': '1.3.6.1.2.1.2.2.1',
|
||||||
|
'Storage': '1.3.6.1.2.1.25.2',
|
||||||
|
'Fans': '1.3.6.1.4.1.232.6.2.9.3.6.0',
|
||||||
|
'Temperature': '1.3.6.1.4.1.232.6.2.9.2.6.0',
|
||||||
|
'Power Supplies': '1.3.6.1.4.1.232.6.2.9.4.6.0',
|
||||||
|
'Memory Errors': '1.3.6.1.4.1.232.6.2.6.8.1.0',
|
||||||
|
'Drive Predictive Failures': '1.3.6.1.4.1.232.3.2.3.1.1.7.0',
|
||||||
|
}
|
||||||
|
|
||||||
|
error_occurred = snmp_query(args.target_ip, args.community_string, hardware_and_health)
|
||||||
|
|
||||||
|
if error_occurred:
|
||||||
|
exit(1) # Exit with code 1 (indicating error)
|
||||||
|
else:
|
||||||
|
exit(0) # Exit with code 0 (indicating success)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user