Ejecución de scripts
WOCU-Monitoring ofrece la posibilidad de ejecutar scripts previamente cargados en el sistema por un Administrador.
Carga de scripts
Para que un script esté disponible, debe colocarse en el siguiente directorio:
/opt/wocu/embedded/wocu/script_launcher/scripts/
Una vez copiados, se debe otorgar permisos de ejecución (si no disponen de ellos previamente).
Para que los scripts se ejecuten correctamente, deben cumplir las siguientes condiciones:
El nombre del script no debe contener espacios.
No deben generar ni modificar archivos intermedios o de salida durante su ejecución.
Deben gestionar internamente la presencia o ausencia de parámetros.
Es necesario implementar una gestión adecuada de bloqueos, previniendo situaciones que puedan causar timeouts.
Recolección automática de parámetros
Para que el sistema identifique y agregue parámetros de forma automática, es necesario incluir una o varias líneas específicas dentro del script.
Cada lídea debe comenzar con el prefijo ##autoload__parameter
seguido del nombre de la variable que se desea declarar.
A continuación, se muestran algunos ejemplos de cómo definir parámetros dentro de un script:
Parámetro host_name
##__autoload__parameter__host_name
Parámetro service name
##__autoload__parameter__service name
Parámetro Stop Condition
##__autoload__parameter__Stop Condition
Como se puede observar, los nombres de parámetro pueden contener espacios.
Ejemplo
En el siguiente script se definen dos parámetros de entrada que posteriormente serán mostrados en el formulario que permitirá su ejecución.
#!/bin/bash
##__autoload__parameter__host1
##__autoload__parameter__host2
##__autoload__parameter__Stop Condition
# Nota: El tercer parámetro no se usa en el script
host1=$1
host2=$2
echo "Primero el parámetro host1: ${host1}"
ping -c1 ${host1}
echo "Después el parámetro host2 ${host2}"
ping -c1 ${host2}
Ejecución de un script
La funcionalidad está preparada para cargar, actualizar y retirar scripts automáticamente.
Cada vez que se accede a la ventana Advanced Diagnostic, el sistema realiza un proceso de recarga que detecta cualquier cambio realizado en los scripts.
Este proceso se ejecuta de manera automática y transparente, sin requerir intervención manual. A continuación, se describe su funcionamiento.
En primer lugar, accede a Advanced Diagnostic, que se encuentra dentro del menú desplegable Settings.
![]()
Una vez dentro, se mostrará un desplegable con la lista de scripts actualmente cargados en el sistema y disponibles para su ejecución.
![]()
Tras seleccionar un script de la lista, aparecerán tantos campos como parámetros se hayan definido mediante el método mostrado más arriba.
![]()
Adicionalmente, aparecerá un selector de ficheros que permite la carga de un fichero de parámetros, en formato CSV.
Llegados a este punto, existen dos formas posibles de ejecutar el script, cada una de las cuales tiene unas implicaciones en cuanto al resultado obtenido:
Ejecución con parámetros indicados manualmente
Este tipo de ejecución se refiere a la que recibe los parámetros necesarios para el script en base a la información introducida por el administrador en los campos de la sección Parámetros.
El resultado mostrado incluye toda la información generada durante la ejecución, incluyendo los mensajes principales, posibles errores y un indicador que refleja el resultado final del proceso.
Ejecución con parámetros cargados por fichero
En este caso de uso, se espera que el administrador cargue un fichero en formato CSV con cabeceras.
El fichero debe contener tantas columnas como parámetros admita el script y cada fila supondrá una ejecución del script con ese conjunto de parámetros.
El retorno en este tipo de ejecución es un fichero de texto con
extensión txt
. En este fichero se encontrará una entrada por
cada ejecución llevada a cabo, es decir, por cada fila del
fichero CSV, sin contar las cabeceras.
Ejemplo
JSON
// Execution date: 2025-03-14 12:29:13
{
"1": {
"parameters": [
"www.example.es",
"www.example.com",
"42"
],
"output": [
"Primero el parámetro host1: www.example.es",
"PING www.example.es (185.53.177.53) 56(84) bytes of data.",
"64 bytes from 185.53.177.53 (185.53.177.53): icmp_seq=1 ttl=48 time=45.9 ms",
"",
"--- www.example.es ping statistics ---",
"1 packets transmitted, 1 received, 0% packet loss, time 0ms",
"rtt min/avg/max/mdev = 45.860/45.860/45.860/0.000 ms",
"Después el parámetro host2 www.example.com",
"PING a1422.dscr.akamai.net (2.22.146.153) 56(84) bytes of data.",
"64 bytes from a2-22-146-153.deploy.static.akamaitechnologies.com (2.22.146.153): icmp_seq=1 ttl=55 time=13.8 ms",
"",
"--- a1422.dscr.akamai.net ping statistics ---",
"1 packets transmitted, 1 received, 0% packet loss, time 0ms",
"rtt min/avg/max/mdev = 13.836/13.836/13.836/0.000 ms",
""
],
"errors": [
""
],
"return_code": 0
},
"2": {
"parameters": [
"8.8.8.8",
"8.8.4.4",
"41"
],
"output": [
"Primero el parámetro host1: 8.8.8.8",
"PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.",
"64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=14.5 ms",
"",
"--- 8.8.8.8 ping statistics ---",
"1 packets transmitted, 1 received, 0% packet loss, time 0ms",
"rtt min/avg/max/mdev = 14.501/14.501/14.501/0.000 ms",
"Después el parámetro host2 8.8.4.4",
"PING 8.8.4.4 (8.8.4.4) 56(84) bytes of data.",
"64 bytes from 8.8.4.4: icmp_seq=1 ttl=117 time=13.3 ms",
"",
"--- 8.8.4.4 ping statistics ---",
"1 packets transmitted, 1 received, 0% packet loss, time 0ms",
"rtt min/avg/max/mdev = 13.283/13.283/13.283/0.000 ms",
""
],
"errors": [
""
],
"return_code": 0
}
}