ジョブの出力が空でない場合にのみ通知を送信する方法


11

rundeckを使用してサービスのログファイルをスキャンし、そこにあるものに応じてアクションを実行しています。基本的に、レコードが存在しない、見つかった各アイテムに対して、gitリポジトリが初期化され、いくつかの残りのエンドポイントが呼び出されますが、それは重要ではありません。

予定どおりに実行するように、たとえば数時間おきにジョブを設定し、失敗時に通知を送信し、さらに少なくとも1つのアクションが実行された場合にのみ成功時に通知を送信します(つまり、タスクのシェルスクリプトが入力されました)ループは少なくとも1回)。スクリプトは、アクションを実行するアイテムが見つかった場合にのみstdoutに出力を出すように記述されています。

この要件で通知をトリガーする方法はrundeckにありますか?または、プラグインを最初から作成せずにスクリプトを作成する方法はありますか?

考えられる回避策の1つは、失敗通知トリガーをオフに切り替え、アクションが実行されたアイテムがない場合にスクリプトがゼロ以外の値を返すようにすることですが、私はそれを行うことには抵抗があります。


出力は本当に空ですか、それともいくつかの空白行またはキャリッジリターンがあるでしょうか?
Tensibai

bashの観点からは、それは空です。私のスクリプトを使用して、単一のシェル段差がある、ないでください私rundeckは周りの出力とそれを飾るだろう
ᴳᵁᴵᴰᴼ

スクリプト自体からの通知の送信はオプションになりますか?そして、rundeckは失敗時にのみ通知し、スクリプトは独自の「何かをした」という通知を行いますか?
Tensibai 2017

それは実際には良い考えです!
ᴳᵁᴵᴰᴼ

回答:


6

私が考えることができる方法は次のとおりです:

通知プラグインのサンプルページから独自のプラグインを作成し、サンプルのメール通知コードを適応させることもできます。

rundeckで成功通知を無効にし、スクリプト自体で成功通知部分を処理します。このように、通常の状態で何かが行われたことを警告するのはスクリプトの責任であり、スクリプトが失敗したことを警告するのはランデッキの責任です。


1
ありがとう。前面にあるツールで機能を
まとめる

1

コマンドを次のように変更することで、この問題を少し危険な方法で回避できました。

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

これは出力をパイプし、出力grepがある場合は失敗しますが、grepそれでも通過しますので、失敗時にRundeckで出力を確認できます。

欠点の1つは、空白行が失われると思いますが、何も出力しないので、適切な終了コードで終了するようにアプリを更新できるようになるまで、私たちをうんざりさせてしまうことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.