check papago
This commit is contained in:
parent
be87abcc29
commit
58c7a7ee57
|
@ -0,0 +1,67 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
###########################
|
||||||
|
# Author: Rubenb #
|
||||||
|
# Fecha: 29/04/2024 #
|
||||||
|
###########################
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import requests
|
||||||
|
import xml.etree.ElementTree as ET
|
||||||
|
|
||||||
|
def obtener_condensacion_cpd(url, nombre_rack, umbral_warning, umbral_critical):
|
||||||
|
try:
|
||||||
|
# Realizar la solicitud HTTP al dispositivo
|
||||||
|
response = requests.get(url)
|
||||||
|
# Verificar si la solicitud fue exitosa
|
||||||
|
if response.status_code == 200:
|
||||||
|
# Parsear el XML recibido
|
||||||
|
root = ET.fromstring(response.text)
|
||||||
|
# Buscar el elemento 'status' que contiene la ubicación del CPD
|
||||||
|
status_cpd = root.find(".//status")
|
||||||
|
if status_cpd is not None:
|
||||||
|
ubicacion_cpd = status_cpd.get('location', 'Desconocido')
|
||||||
|
# Buscar el elemento 'sns' con el nombre del rack especificado
|
||||||
|
rack_cpd = root.find(f".//sns[@name='{nombre_rack}']")
|
||||||
|
if rack_cpd is not None:
|
||||||
|
# Obtener el valor de la condensación del CPD
|
||||||
|
condensacion_cpd = float(rack_cpd.get('val3'))
|
||||||
|
# Comprobar los umbrales
|
||||||
|
if condensacion_cpd >= umbral_critical:
|
||||||
|
print(f"CRITICAL: Condensación del {ubicacion_cpd} {nombre_rack} ({condensacion_cpd}°C) excede el umbral crítico ({umbral_critical}°C)")
|
||||||
|
sys.exit(2)
|
||||||
|
elif condensacion_cpd >= umbral_warning:
|
||||||
|
print(f"WARNING: Condensación del {ubicacion_cpd} {nombre_rack} ({condensacion_cpd}°C) excede el umbral de advertencia ({umbral_warning}°C)")
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
print(f"OK: Condensación del {ubicacion_cpd} {nombre_rack}: {condensacion_cpd}°C")
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
print(f"Error: No se encontró el rack '{nombre_rack}' en el XML.")
|
||||||
|
sys.exit(3)
|
||||||
|
else:
|
||||||
|
print("Error: No se encontró el elemento 'status' en el XML.")
|
||||||
|
sys.exit(3)
|
||||||
|
else:
|
||||||
|
print("Error: No se pudo obtener el XML del dispositivo.")
|
||||||
|
sys.exit(3)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error: {e}")
|
||||||
|
sys.exit(3)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Verificar la cantidad de argumentos
|
||||||
|
if len(sys.argv) != 5:
|
||||||
|
print("Uso: python script.py <IP_del_dispositivo> <nombre_rack> <umbral_warning> <umbral_critical>")
|
||||||
|
sys.exit(3)
|
||||||
|
|
||||||
|
# Argumentos de línea de comandos
|
||||||
|
ip_dispositivo = sys.argv[1]
|
||||||
|
nombre_rack = sys.argv[2]
|
||||||
|
umbral_warning = float(sys.argv[3])
|
||||||
|
umbral_critical = float(sys.argv[4])
|
||||||
|
|
||||||
|
# URL del dispositivo que proporciona el XML
|
||||||
|
url_dispositivo = f"http://{ip_dispositivo}/fresh.xml"
|
||||||
|
obtener_condensacion_cpd(url_dispositivo, nombre_rack, umbral_warning, umbral_critical)
|
|
@ -0,0 +1,67 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
###########################
|
||||||
|
# Author: Rubenb #
|
||||||
|
# Fecha: 29/04/2024 #
|
||||||
|
###########################
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import requests
|
||||||
|
import xml.etree.ElementTree as ET
|
||||||
|
|
||||||
|
def obtener_humedad_cpd(url, nombre_rack, umbral_warning, umbral_critical):
|
||||||
|
try:
|
||||||
|
# Realizar la solicitud HTTP al dispositivo
|
||||||
|
response = requests.get(url)
|
||||||
|
# Verificar si la solicitud fue exitosa
|
||||||
|
if response.status_code == 200:
|
||||||
|
# Parsear el XML recibido
|
||||||
|
root = ET.fromstring(response.text)
|
||||||
|
# Buscar el elemento 'status' que contiene la ubicación del CPD
|
||||||
|
status_cpd = root.find(".//status")
|
||||||
|
if status_cpd is not None:
|
||||||
|
ubicacion_cpd = status_cpd.get('location', 'Desconocido')
|
||||||
|
# Buscar el elemento 'sns' con el nombre del rack especificado
|
||||||
|
rack_cpd = root.find(f".//sns[@name='{nombre_rack}']")
|
||||||
|
if rack_cpd is not None:
|
||||||
|
# Obtener el valor de la humedad del CPD
|
||||||
|
humedad_cpd = float(rack_cpd.get('val2'))
|
||||||
|
# Comprobar los umbrales
|
||||||
|
if humedad_cpd >= umbral_critical:
|
||||||
|
print(f"CRITICAL: Humedad del {ubicacion_cpd} {nombre_rack} ({humedad_cpd}%) excede el umbral crítico ({umbral_critical}%)")
|
||||||
|
sys.exit(2)
|
||||||
|
elif humedad_cpd >= umbral_warning:
|
||||||
|
print(f"WARNING: Humedad del {ubicacion_cpd} {nombre_rack} ({humedad_cpd}%) excede el umbral de advertencia ({umbral_warning}%)")
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
print(f"OK: Humedad del {ubicacion_cpd} {nombre_rack}: {humedad_cpd}%")
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
print(f"Error: No se encontró el rack '{nombre_rack}' en el XML.")
|
||||||
|
sys.exit(3)
|
||||||
|
else:
|
||||||
|
print("Error: No se encontró el elemento 'status' en el XML.")
|
||||||
|
sys.exit(3)
|
||||||
|
else:
|
||||||
|
print("Error: No se pudo obtener el XML del dispositivo.")
|
||||||
|
sys.exit(3)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error: {e}")
|
||||||
|
sys.exit(3)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Verificar la cantidad de argumentos
|
||||||
|
if len(sys.argv) != 5:
|
||||||
|
print("Uso: python script.py <IP_del_dispositivo> <nombre_rack> <umbral_warning> <umbral_critical>")
|
||||||
|
sys.exit(3)
|
||||||
|
|
||||||
|
# Argumentos de línea de comandos
|
||||||
|
ip_dispositivo = sys.argv[1]
|
||||||
|
nombre_rack = sys.argv[2]
|
||||||
|
umbral_warning = float(sys.argv[3])
|
||||||
|
umbral_critical = float(sys.argv[4])
|
||||||
|
|
||||||
|
# URL del dispositivo que proporciona el XML
|
||||||
|
url_dispositivo = f"http://{ip_dispositivo}/fresh.xml"
|
||||||
|
obtener_humedad_cpd(url_dispositivo, nombre_rack, umbral_warning, umbral_critical)
|
Loading…
Reference in New Issue