¡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! ⬇️

¡Descubre mis 5 HERRAMIENTAS SECRETAS que transformarán tu productividad!

Apúntate y te enseñaré mis 5 herramientas principales para ser más eficiente en mi día a día. Además, te iré enviando todas las novedades del sector tecnológico resumidas para que estés al día de todo lo que sucede, actualizaciones de principales softwares y vulnerabilidades destacadas de la semana.

⬇️ Seguro que esto te interesa ⬇️