check mikrotik backups
This commit is contained in:
parent
3ab0e55e1b
commit
c626eadd9d
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/env python3
|
||||
import os
|
||||
import datetime
|
||||
import sys
|
||||
|
||||
def check_backups(directory, filenames, extensions):
|
||||
# Obtener la fecha actual en formato año-mes-día
|
||||
today = datetime.datetime.now().strftime("%Y%m%d")
|
||||
missing_files = []
|
||||
|
||||
# lista de nombres de archivos a excluir de la comprobacion
|
||||
excluded_files_one = ["holland-backupscript", "madrid-backupscript", "barcelona-backupscript"]
|
||||
excluded_files_two = ["holland-backup", "madrid-backup", "barcelona-backup"]
|
||||
|
||||
# Lista de nombres de archivo a excluir que NO existen ej. holland-backupscript-fecha.backup
|
||||
excluded_names_one = [f"{file_name}-{today}.backup" for file_name in excluded_files_one]
|
||||
# Lista de nombres de archivo a excluir que NO existen ej. holland-backup-fecha.backup
|
||||
excluded_names_two = [f"{file_name}-{today}.rsc" for file_name in excluded_files_two]
|
||||
# Suma de arrays con lista de nombres de archivos a excluir
|
||||
excluded_names = excluded_names_one + excluded_names_two
|
||||
|
||||
# Comprobar todos los archivos esperados
|
||||
for base_name in filenames:
|
||||
for extension in extensions:
|
||||
expected_filename = f"{base_name}-{today}.{extension}"
|
||||
|
||||
# si el nombre base esta en la lista de nombres excluidos , continuar con el siguiente nombre
|
||||
if expected_filename in excluded_names:
|
||||
continue
|
||||
|
||||
full_path = os.path.join(directory, expected_filename)
|
||||
|
||||
if not os.path.exists(full_path):
|
||||
missing_files.append(expected_filename)
|
||||
|
||||
if missing_files:
|
||||
print(f"CRITICAL: Missing backup files in {directory}: " + ", ".join(missing_files))
|
||||
return 2 # Código de salida para CRITICAL
|
||||
|
||||
print("OK: All backup files exist.")
|
||||
return 0 # Código de salida para OK
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Chequear si se proporcionaron suficientes argumentos
|
||||
if len(sys.argv) < 3:
|
||||
print("Usage: {} <directory> <filename1> [<filename2> ...]".format(sys.argv[0]))
|
||||
sys.exit(3) # Código de salida para UNKNOWN
|
||||
|
||||
backup_directory = sys.argv[1]
|
||||
filenames = sys.argv[2:]
|
||||
extensions = ['rsc', 'backup']
|
||||
|
||||
# Llamar a la función de comprobación y salir con el código de estado adecuado
|
||||
result = check_backups(backup_directory, filenames, extensions)
|
||||
sys.exit(result)
|
Loading…
Reference in New Issue