Cómo enviar notificaciones solo en caso de que la salida del trabajo no esté vacía

11

Estamos utilizando rundeck para escanear archivos de registro de un servicio y tomar medidas según lo que se encuentre allí. Básicamente, para cada elemento encontrado, para el que no existe un registro, se inicializa un repositorio git y se llaman algunos puntos finales de descanso, pero ese no es el punto.

Estamos configurando el trabajo para que se ejecute según lo programado, digamos cada dos horas, y para enviar notificaciones en caso de falla, y adicionalmente para enviar notificaciones en caso de éxito solo cuando se haya tomado al menos una acción (es decir, el script de shell en la tarea ingresada el bucle al menos una vez). La secuencia de comandos se escribe de modo que solo emite resultados en stdout cuando se encuentran elementos a ser accionados.

¿Hay alguna manera en rundeck para activar la notificación con este requisito? ¿O una forma de escribirlo sin escribir un complemento desde cero?

Una posible solución sería desactivar el desencadenador de notificación de falla y hacer que el script devuelva un valor distinto de cero en caso de que no se active ningún elemento, pero no me siento cómodo al hacerlo.

ᴳᵁᴵᴰᴼ
fuente
¿La salida está realmente vacía, o podría tener algunas líneas en blanco o un retorno de carro?
Tensibai
afaics está vacío, desde una perspectiva bash; hay un solo paso de shell con mi script, no estoy seguro de que rundeck lo decoraría con salida alrededor
ᴳᵁᴵᴰᴼ
¿Enviar una notificación desde el script en sí sería una opción? ¿Entonces Rundeck solo notifica en caso de falla y el script hace su propia notificación de "hice algo"?
Tensibai
Esa es realmente una buena idea!
ᴳᵁᴵᴰᴼ

Respuestas:

6

Lo que se me ocurre son:

Escribir su propio complemento, desde la página de ejemplo del complemento de notificación , adaptar el código de notificación de correo de ejemplo podría ser una forma.

Deshabilita las notificaciones de éxito en rundeck y maneja la parte de notificación de éxito en tu propio script. De esta manera, es responsabilidad de su script advertirle que hizo algo en estado normal y aún es responsabilidad de la plataforma de ejecución advertirle que el script falló.

Tensibai
fuente
1
Gracias; cuando se obtiene una característica envuelto por la herramienta que tiene delante, es así que a veces comunes a olvide que usted puede ir a por ello directamente ....
ᴳᵁᴵᴰᴼ
1

Pude solucionar este problema de una manera un poco dudosa cambiando el comando a:

/bin/bash -c "your-command-here | { ! grep '^'; }"

Esto canaliza la salida grepy falla si hay alguna salida, pero grepaún así la pasa para que pueda ver la salida en Rundeck en caso de falla.

Un inconveniente es que creo que pierdes las líneas en blanco, pero no enviamos ninguna, por lo que no es un gran problema para nosotros, y nos dejará sin aliento hasta que podamos actualizar la aplicación para que termine con un código de salida adecuado.

Malvinoso
fuente