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

78 lines
3.8 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 = ["madrid", "holland"]
# Variable fecha actual
fecha_actual = datetime.now().strftime('%Y%m%d')
# Variable directorio backups
directorio_backup = "/srv/tftp/backup"
# archivos backup que deberian existir
archivos_backup_deberian_existir = [nombre + '-backup-' + fecha_actual + '.backup' for nombre in nombres_archivos if nombre + '-backup-' + fecha_actual + '.backup']
# debug
#print("archivosQueDeberianExistir:", archivos_backup_deberian_existir) # debug
# archivos backupscript que deberian existir
archivos_backupscript_deberian_existir = [nombre + '-backupscript-' + fecha_actual + '.rsc' for nombre in nombres_archivos if nombre + '-backupscript-' + fecha_actual + '.rsc']
# debug
#print("archivosQueDeberianExistir:", archivos_backupscript_deberian_existir) # debug
# lista concatenada archivos_deberian_existir backup + backupscript
lista_concatenada_archivos_deberian_existir = archivos_backup_deberian_existir + archivos_backupscript_deberian_existir
# archivos backup encontrados / existentes
archivos_backup_encontrados = [nombre + '-backup-' + fecha_actual + '.backup' for nombre in nombres_archivos if nombre + '-backup-' + fecha_actual + '.backup' in os.listdir(directorio_backup)]
# debug
#print("archivosEncontrados:", archivos_backup_encontrados) # debug
# archivos backupscript encontrados / existentes
archivos_backupscript_encontrados = [nombre + '-backupscript-' + fecha_actual + '.rsc' for nombre in nombres_archivos if nombre + '-backupscript-' + fecha_actual + '.rsc' in os.listdir(directorio_backup)]
# debug
#print("archivosEncontrados:", archivos_backupscript_encontrados) # debug
# lista concatenada archivos_encontrados backup + backupscript
lista_concatenada_archivos_encontrados = archivos_backup_encontrados + archivos_backupscript_encontrados
# archivos backup no encontrados / existentes
archivos_backup_no_encontrados = [nombre + '-backup-' + fecha_actual + '.backup' for nombre in nombres_archivos if nombre + '-backup-' + fecha_actual + '.backup' not in os.listdir(directorio_backup)]
# debug
#print("archivosbackupNoEncontrados:", archivos_backup_no_encontrados) # debug
# archivos backupscript no encontrados / existentes
archivos_backupscript_no_encontrados = [nombre + '-backupscript-' + fecha_actual + '.rsc' for nombre in nombres_archivos if nombre + '-backupscript-' + fecha_actual + '.rsc' not in os.listdir(directorio_backup)]
# debug
#print("archivosbackupscriptNoEncontrados:", archivos_backupscript_no_encontrados) # debug
# lista concatenada archivos_no_encontrados backup + backupscript
lista_concatenada_archivos_no_encontrados = archivos_backup_no_encontrados + archivos_backupscript_no_encontrados
# 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()