Come inviare la notifica solo in caso di output del lavoro non vuoto


12

Stiamo usando rundeck per scansionare i file di registro per un servizio e agire in base a ciò che si trova lì. Fondamentalmente, per ogni elemento trovato, per il quale non esiste un record, viene inizializzato un repository git e vengono chiamati alcuni endpoint di riposo, ma non è questo il punto.

Stiamo configurando il lavoro in modo che venga eseguito come pianificato, diciamo ogni paio d'ore, e per inviare una notifica in caso di errore e inoltre per inviare una notifica in caso di successo solo quando è stata eseguita almeno un'azione (ad es. Lo script della shell nell'attività inserita il loop almeno una volta). Lo script è scritto in modo da emettere output su stdout solo quando vengono trovati gli elementi da azionare.

C'è un modo in rundeck per attivare la notifica con questo requisito? O un modo per scriverlo senza scrivere un plugin da zero?

Una possibile soluzione sarebbe quella di disattivare il trigger di notifica degli errori e rendere lo script restituito diverso da zero in caso di nessuna azione eseguita, ma non mi sento a mio agio nel farlo.


L'output è veramente vuoto o potrebbe avere alcune righe blanck o un ritorno a capo?
Tensibai,

afaics è vuoto, da una prospettiva bash; c'è un singolo passaggio della shell con il mio script, non sono sicuro che rundeck lo decorerebbe con l'output in giro
ᴳᵁᴵᴰᴼ

Inviare la notifica dallo script stesso sarebbe un'opzione? E così il rundeck avvisa solo in caso di fallimento e lo script fa la sua notifica "Ho fatto qualcosa"?
Tensibai,

Questa è in realtà una buona idea!
ᴳᵁᴵᴰᴼ

Risposte:


7

Il modo in cui potrei pensare sono:

Scrivere il proprio plug-in, dalla pagina di esempio del plug-in di notifica , adattare il codice di notifica di posta di esempio potrebbe essere un modo.

Disabilita le notifiche di successo in rundeck e gestisci la parte delle notifiche di successo nello script stesso. In questo modo è la responsabilità della tua sceneggiatura di avvertire che ha fatto qualcosa nello stato normale ed è ancora responsabilità di avvertirti che la sceneggiatura è fallita.


1
Grazie; quando ottieni una funzionalità racchiusa nello strumento che hai davanti, è così comune a volte dimenticare che puoi
provarla

1

Sono stato in grado di aggirare questo problema in modo un po 'complicato modificando il comando in:

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

Questo convoglia l'output grepe fallisce se c'è qualche output, ma greplo attraversa comunque in modo da poter vedere l'output in Rundeck in caso di errore.

Uno svantaggio è che credo che tu perda le righe vuote ma non ne produciamo alcuno, quindi non ci occuperemo di nulla, e ci ripulirà finché non potremo aggiornare l'app per terminare con un codice di uscita adeguato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.