Ejecución de scripts
WOCU-Monitoring ofrece la posibilidad de ejecutar scripts previamente cargados en el sistema por un administrador.
Carga de scripts
Los scripts han de dejarse 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).
Se deben cumplir las siguientes condiciones para la correcta ejecución de los scripts:
El nombre del script no debe contener espacios.
No deben escribir en ficheros intermedios o finales, durante su ejecución.
Deberán gestionar internamente la llegada o ausencia de parámetros.
Han de tener en cuenta posibles bloqueos y, en caso de producirse, gestionarlos adecuadamente para evitar timeouts.
Recolección automática de parámetros
Para que el sistema agregue los parámetros de forma automática, es necesario incluir tantas líneas como se desee.
Cada una de ellas debe comenzar con el prefijo ##autoload__parameter
seguido del nombre de la variable.
Estos son algunos ejemplos de la definición de 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 Diagnosis, se lleva a cabo el proceso de recarga que advierte al sistema de los posibles cambios.
Este proceso se realiza de forma transparente y no requiere de acciones manuales:
En primer lugar, accederemos a Advanced Diagnosis, que se encuentra dentro del menú desplegable Settings.
![]()
Una vez en él, se mostrará un desplegable con la lista de scripts cargados en el sistema.
![]()
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
}
}