Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Ejecutar .bat tras alerta lanzada
#1
Buenas!,

Tengo un agente instalado en un servidor Windows con un módulo que simplemente realiza un ping a una IP, si la IP responde devuelve un 1, si no responde devuelve un 0 y su correspondiente estado crítico. Ahora bien, quiero asignarle a ese módulo una alerta para que ejecute un .bat que tengo en el servidor donde tengo el agente instalado, lo que hace este bat es simplemente desactivar y volver a activar la tarjeta de red.

La alerta se lanza bien pero en el comando no sé muy bien que ponerle para que se ejecute el .bat una vez lanzada la alerta.

He probado con módule_exec y la ruta del .bat sin éxito.

Si alguien puede echarme una mano se lo agradecería.

Gracias!.
 Reply
#2
Buenos días,

en la definición del módulo existe una acción que es module_condition <operación> <comando> con la que es posible definir comandos que se ejecutarán cuando el módulo devuelva determinados valores.

Es necesario especificar una de las siguientes operaciones:

> [valor]: Ejecuta el comando cuando el valor del módulo es mayor que el valor dado.
< [valor]: Ejecuta el comando cuando el valor del módulo es menor que el valor dado.
= [valor]: Ejecuta el comando cuando el valor del módulo es igual al valor dado.
!= [valor]: Ejecuta el comando cuando el valor del módulo es distinto al valor dado.
=~ [expresión regular]: Ejecuta el comando cuando el valor del módulo concuerda con la expresión regular dada.
(valor, valor): Ejecuta el comando cuando el valor del módulo está comprendido entre los valores dados.

En el sistema operativo Windows es recomendable anteponer cmd.exe /c al comando para asegurar que se ejecuta de forma adecuada. Por ejemplo:

module_begin
module_name condition_test
module_type generic_data
module_exec echo 5
module_condition (2, 8) cmd.exe /c script.bat
module_end

Un saludo!



 Reply
#3
Estimados, primero que todo no quise abrir un tema porque pensé que no era necesario ya que es sobre la misma temática mi duda.

Tengo el siguiente módulo en un servidor Linux, donde básicamente me devuelve la memoria RAM libre en %
El problema es que la instrucción module_condition < 30 /root/LiberarCache.sh no funciona, es decir, al ser menor a 30 (%) no ejecuta el script.

Ya probé el script directamente y funciona correctamente. ¿A que se debe?

module_begin
module_name Memoria Libre (%)
module_description Memoria Libre (%)
module_type generic_data
module_exec TOTAL=`vmstat -s | grep "total memory" | awk  '{ print $1 } '` ; FREE=`vmstat -s | grep "free memory" | awk  '{ print $1 } '` ; TOT="100" ; echo "scale=2;($
module_condition < 30 /root/LiberarCache.sh
module_min_warning 11
module_max_warning 30
module_min_critical 0
module_max_critical 10
module_unit %
module_end
 Reply
#4
Buenos días,

Parece problema de los timeout.

¿Podrías ponerle un timeout a la ejecución del módulo más alto que el tiempo que tarda en el ejecutarse el comando + el script?

Revisa también que el sh tenga permisos de ejecución.

Un saludo,
Emilio.
 Reply
#5
Agradezco tu respuesta, pude solucionarlo. El problema era tenia mal definida la alerta en el archivo de configuración.

Ya funciona sin problemas!
 Reply
#6
Hola jpegazo,

Me alegra que consiguieras solucionarlo. No dudes abrir nuevas incidencias ante cualquier otro problema.

Un saludo,
Emilio.
 Reply


Users browsing this thread: 1 Guest(s)


(c) 2006-2018 Artica Soluciones Tecnológicas. Contents of this wiki are under Create Common Attribution v3 licence. | pandorafms.com | pandorafms.org

Theme © MyBB Themes