monitoring-plugins-vn/check_backup/v1/check_backup_cisco.py

81 lines
4.6 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
###########################
# Author: Rubenb #
# Fecha: 04/01/2024 #
###########################
import subprocess
import os
import sys
from datetime import datetime
def verificar_backup():
# Lista de nombres de archivos específicos
nombres_archivos = ["sw19", "sw20", "sw21", "hol-sw1"]
# Variable fecha actual
fecha_actual = datetime.now().strftime('%Y%m%d')
# Variable directorio backups
directorio_backup = "/srv/tftp/backup"
# archivos que deberian existir running config
archivos_deberian_existir_running_config = [nombre + '-running-config-' + fecha_actual for nombre in nombres_archivos if nombre + '-running-config-' + fecha_actual ]
# archivos que deberian existir boot
archivos_deberian_existir_boot = [nombre + '-boot-' + fecha_actual for nombre in nombres_archivos if nombre + '-boot-' + fecha_actual ]
# lista concatenada archivos_deberian_existir running_config + boot
lista_concatenada_archivos_deberian_existir = archivos_deberian_existir_running_config + archivos_deberian_existir_boot
# debug deberian existir running config
#print("archivosQueDeberianExistir _running_config:", archivos_deberian_existir_running_config) # debug
# debug deberian existir boot
#print("archivosQueDeberianExistir _boot:", archivos_deberian_existir_boot) # debug
# debug lista concatenada archivos_deberian_existir running_config + boot
#print("archivos_deberian_existir running_config + boot:", lista_concatenada_archivos_deberian_existir) # debug
# archivos encontrados / existentes _running_config
archivos_encontrados_running_config = [nombre + '-running-config-' + fecha_actual for nombre in nombres_archivos if nombre + '-running-config-' + fecha_actual in os.listdir(directorio_backup)]
# archivos encontrados / existentes _boot
archivos_encontrados_boot = [nombre + '-boot-' + fecha_actual for nombre in nombres_archivos if nombre + '-boot-' + fecha_actual in os.listdir(directorio_backup)]
# lista concatenada archivos encontrados / existentes running_config + boot
lista_concatenada_archivos_encontrados = archivos_encontrados_running_config + archivos_encontrados_boot
# debug archivos encontrados / existentes _running_config
#print("archivosEncontrados:", archivos_encontrados_running_config) # debug
# debug archivos encontrados / existentes _boot
#print("archivosEncontrados:", archivos_encontrados_boot) # debug
# debug lista concatenada archivos encontrados / existentes running_config + boot
#print("archivosEncontrados running_config + boot:", lista_concatenada_archivos_encontrados) # debug
# archivos no encontrados / no existentes _running_config
archivos_no_encontrados_running_config = [nombre + '-running-config-' + fecha_actual for nombre in nombres_archivos if nombre + '-running-config-' + fecha_actual not in os.listdir(directorio_backup)]
# archivos no encontrados / no existentes _boot
archivos_no_encontrados_boot = [nombre + '-boot-' + fecha_actual for nombre in nombres_archivos if nombre + '-boot-' + fecha_actual not in os.listdir(directorio_backup)]
# lista concatenada archivos encontrados / existentes running_config + boot
lista_concatenada_archivos_no_encontrados = archivos_no_encontrados_running_config + archivos_no_encontrados_boot
# debug archivos no encontrados / no existentes _running_config
#print("archivosNoEncontrados_running_config:", archivos_no_encontrados_running_config) # debug
# debug archivos no encontrados / no existentes _boot
#print("archivosNoEncontrados_boot:", archivos_no_encontrados_boot) # debug
# debug lista concatenada archivos no encontrados / no existentes running_config + boot
#print("archivosNoEncontrados running_config + boot:", lista_concatenada_archivos_no_encontrados) # debug
# lógica para verificar la existencia de archivos específicos para la fecha de hoy
if lista_concatenada_archivos_deberian_existir != lista_concatenada_archivos_encontrados:
mensaje = f"No se encontraron archivos de backup para la fecha {fecha_actual} o falta alguno , archivos encontrados {lista_concatenada_archivos_encontrados} , archivos que deberian existir {lista_concatenada_archivos_deberian_existir} , Archivos no encontrados: {lista_concatenada_archivos_no_encontrados} , Revisar backups en /srv/tftp/backup ."
print("CRITICAL:", mensaje)
sys.exit(2) # Critical
else:
mensaje = f"Archivos de backup encontrados {', '.join(lista_concatenada_archivos_encontrados)} ."
print("OK:", mensaje)
sys.exit(0) # OK
verificar_backup()