¡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!
Seguro que esto te interesa
