So senden Sie eine Benachrichtigung nur, wenn die Jobausgabe nicht leer ist


11

Wir verwenden rundeck, um Protokolldateien nach einem Dienst zu durchsuchen und Maßnahmen zu ergreifen, je nachdem, was sich dort befindet. Grundsätzlich wird für jedes gefundene Element, für das kein Datensatz vorhanden ist, ein Git-Repository initialisiert und einige Restendpunkte aufgerufen, aber das ist nicht der Punkt.

Wir richten den Job so ein, dass er wie geplant ausgeführt wird, beispielsweise alle paar Stunden, und eine Benachrichtigung bei einem Fehler sendet und zusätzlich eine Benachrichtigung bei Erfolg nur dann sendet, wenn mindestens eine Aktion ausgeführt wurde (dh das Shell-Skript in der eingegebenen Aufgabe die Schleife mindestens einmal). Das Skript ist so geschrieben, dass es nur dann eine Ausgabe auf stdout ausgibt, wenn zu handelnde Elemente gefunden werden.

Gibt es in rundeck eine Möglichkeit, eine Benachrichtigung mit dieser Anforderung auszulösen? Oder eine Möglichkeit, ein Skript zu erstellen, ohne ein Plugin von Grund auf neu zu schreiben?

Eine mögliche Problemumgehung besteht darin, den Auslöser für die Fehlerbenachrichtigung auszuschalten und das Skript auf einen Wert ungleich Null zurückzusetzen, wenn keine Elemente ausgeführt werden. Ich bin jedoch damit nicht zufrieden.


Ist die Ausgabe wirklich leer oder könnte sie einige Blanck-Zeilen oder einen Wagenrücklauf haben?
Tensibai

afaics es ist leer, aus einer Bash-Perspektive; Es gibt einen einzelnen Shell-Schritt mit meinem Skript, nicht sicher, ob ich Rundeck mit Ausgabe um
ᴳᵁᴵᴰᴼ

Wäre das Senden der Benachrichtigung vom Skript selbst eine Option? Und so benachrichtigt rundeck nur bei einem Fehler und das Skript macht seine eigene Benachrichtigung "Ich habe etwas getan"?
Tensibai

Das ist eigentlich eine gute Idee!
3.

Antworten:


6

Ich könnte mir Folgendes vorstellen:

Das Schreiben eines eigenen Plugins auf der Beispielseite des Benachrichtigungs-Plugins und das Anpassen des Beispiel-E-Mail-Benachrichtigungscodes kann eine Möglichkeit sein.

Deaktivieren Sie Erfolgsbenachrichtigungen in rundeck und behandeln Sie den Teil der Erfolgsbenachrichtigung in Ihrem Skript. Auf diese Weise liegt es in Ihrer Verantwortung, dass das Skript warnt, dass etwas im normalen Zustand ausgeführt wurde, und es liegt weiterhin in der Verantwortung von rundeck, Sie zu warnen, dass das Skript fehlgeschlagen ist.


1
Vielen Dank; Wenn Sie eine Funktion erhalten, die von dem Tool, das Sie vor sich haben, eingepackt wird, ist es manchmal so häufig zu vergessen, dass Sie sie direkt
ausführen

1

Ich konnte dieses Problem auf etwas zwielichtige Weise umgehen, indem ich den Befehl in:

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

Dies leitet die Ausgabe durch grepund schlägt fehl, wenn überhaupt eine Ausgabe vorhanden ist, grepleitet sie jedoch weiter, sodass Sie die Ausgabe bei einem Fehler weiterhin in Rundeck sehen können.

Ein Nachteil ist, dass ich glaube, dass Sie keine leeren Zeilen verlieren, aber wir keine ausgeben, also keine große Sache für uns, und es wird uns überraschen, bis wir die App aktualisieren können, um mit einem richtigen Exit-Code zu beenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.