******************** 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. .. admonition:: 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 :ref:`settings`. .. image:: ../images/operation/2_013_aggregator_script_execution-02.png :align: center :alt: Imagen del desplegable con la opción Advanced Diagnosis señalada. - Una vez en él, se mostrará un desplegable con la lista de scripts cargados en el sistema. .. image:: ../images/operation/2_013_aggregator_script_execution-03.png :align: center :alt: Imagen con la ventana de Advanced Diagnosis y los 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. .. image:: ../images/operation/2_013_aggregator_script_execution-01.png :align: center :alt: Imagen de la ventana Advanced Diagnosis con un script seleccionado y los campos del formulario sin rellenar. - 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**. .. image:: ../images/operation/2_013_aggregator_script_execution-04.png :align: center :alt: Imagen de la ventana Advanced Diagnosis con un script seleccionado y los campos del formulario rellenos. 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. .. image:: ../images/operation/2_013_aggregator_script_execution-05.png :align: center :alt: Imagen de la ventana Advanced Diagnosis con la salida tras la ejecución del script 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. .. image:: ../images/operation/2_013_aggregator_script_execution-06.png :align: center :alt: Imagen de las celdas de un CSV de ejemplo. 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. .. admonition:: 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 } }