¡Hola a todos!
Hoy quiero compartir con vosotros una guía para crear un script de Nagios que nos permitirá verificar si nuestra instancia de BookStack está actualizada a la última versión disponible. Al igual que con cualquier otra aplicación, mantener BookStack actualizado es crucial para la seguridad y el rendimiento de nuestra plataforma. Con este script, automatizaremos la tarea de comprobarlo.
Creación del Script para Verificar la Versión de BookStack
Paso 1: Instalar Dependencias
Primero, necesitamos asegurarnos de tener curl
y jq
instalados en el servidor donde se ejecutará el script. Estos paquetes nos permitirán realizar solicitudes HTTP y procesar datos JSON, respectivamente.
sudo apt-get update sudo apt-get install curl jq -y
Paso 2: Crear el Script Bash
Vamos a crear un script llamado check_bookstack_version.sh
. Este script comprobará la versión actual de BookStack instalada y la comparará con la última versión disponible en github.
#!/bin/bash # ============================================= # check_bookstack_version.sh (versión limpia) # ============================================= # Asegúrate de: # 1) Guardar el fichero con saltos de línea UNIX (LF), NO Windows (CRLF). # 2) Tener permisos de ejecución: chmod +x check_bookstack_version.sh # 3) Llamarlo directamente: ./check_bookstack_version.sh # ============================================= # Mensaje inicial para comprobar que el script se ejecuta echo "DEBUG: Iniciando script check_bookstack_version.sh..." # URL de la API de GitHub para obtener la última versión de BookStack BOOKSTACK_LATEST_RELEASE_URL="https://api.github.com/repos/BookStackApp/BookStack/releases/latest" # 1) Verificar si jq está instalado if ! command -v jq &> /dev/null; then echo "BOOKSTACK UNKNOWN - 'jq' no está instalado." exit 3 fi # 2) Verificar si curl está instalado if ! command -v curl &> /dev/null; then echo "BOOKSTACK UNKNOWN - 'curl' no está instalado." exit 3 fi # 3) Obtener el JSON de la última release RESPONSE="$(curl -s "$BOOKSTACK_LATEST_RELEASE_URL")" # 4) Verificar que la respuesta no esté vacía if [ -z "$RESPONSE" ]; then echo "BOOKSTACK UNKNOWN - No se recibió respuesta de la API de GitHub." exit 3 fi # 5) Extraer el 'tag_name' mediante jq LATEST_VERSION="$(echo "$RESPONSE" | jq -r '.tag_name')" # (OPCIONAL) Muestra un debug con el valor extraído echo "DEBUG: tag_name extraído -> '$LATEST_VERSION'" # 6) Verificar si no existe o es "null" if [ -z "$LATEST_VERSION" ] || [ "$LATEST_VERSION" = "null" ]; then echo "BOOKSTACK UNKNOWN - No se pudo extraer la última versión desde la API." exit 3 fi # 7) Eliminar la 'v' inicial (por ejemplo v24.12 -> 24.12) LATEST_VERSION="$(echo "$LATEST_VERSION" | sed 's/^v//')" # 8) Mostrar la información final y salir con OK echo "BOOKSTACK OK - Versión detectada: $LATEST_VERSION" exit 0
Guarda el script y dale permisos de ejecución:
chmod +x check_bookstack_version.sh
Paso 3: Configurar Nagios
Para que Nagios utilice este script, debemos añadir un nuevo comando y un nuevo servicio en los archivos de configuración de Nagios.
Agregar el Comando en commands.cfg
:
define command{ command_name check_bookstack_version command_line /ruta/al/script/check_bookstack_version.sh }
Agregar el Servicio en services.cfg
:
define service{ use generic-service host_name tu_servidor service_description BookStack Version check_command check_bookstack_version }
Paso 4: Reiniciar Nagios
Finalmente, reiniciamos el servicio de Nagios para aplicar los cambios:
sudo systemctl restart nagios
Con este script y la configuración en Nagios, ahora podrás monitorizar automáticamente si tu instancia de BookStack está actualizada. Mantener tu plataforma al día es fundamental para la seguridad y el rendimiento, y con esta solución, podrás estar al tanto de las actualizaciones de manera eficiente.
¡Espero que esta guía te sea útil! ¡Hasta la próxima!
⬇️¡Sigue, comenta y comparte! ⬇️