仅在作业输出为非空时如何发送通知


12

我们正在使用rundeck扫描服务的日志文件,并根据在其中找到的内容采取措施。基本上,对于找到的每个项目(不存在记录),都会初始化git存储库并调用一些其他终结点,但这并不是重点。

我们正在将作业设置为按计划运行,例如每隔几个小时运行一次,并发送有关失败的通知,此外,仅当已采取至少一项操作(例如,输入任务中的shell脚本)时,才发送有关成功的通知。循环至少一次)。编写脚本是为了使它仅在找到要操作的项目时才在stdout上输出输出。

在rundeck中是否有一种方法可以触发此要求的通知?还是一种无需编写脚本即可编写脚本的方法?

一种可能的解决方法是关闭故障通知触发器,并在没有任何操作的情况下使脚本返回非零值,但我对此不太满意。


输出是否真的为空,或者是否可能有一些空白行或回车符?
Tensibai'3

从bash的角度来看,它是空的;有一个与我的脚本一个单一的配件台阶,不知道我rundeck将与输出周围装饰它
ᴳᵁᴵᴰᴼ

是否可以选择从脚本本身发送通知?因此,rundeck仅在失败时发出通知,而脚本会自己执行“我做了某件事”通知?
Tensibai

这实际上是一个好主意!
ᴳᵁᴵᴰᴼ

Answers:


7

我能想到的方式是:

从通知插件示例页面编写您自己的插件,调整示例邮件通知代码可能是一种方法。

在rundeck中禁用成功通知,并在脚本本身中处理成功通知部分。这样,警告脚本在正常状态下执行某些操作是您的脚本责任,而警告您脚本失败仍然是轻率的责任。


1
谢谢; 当你通过你面前有刀具包裹起来一个特点,它是如此普遍,有时忘了,你可以直接去了....
ᴳᵁᴵᴰᴼ

1

通过将命令更改为以下内容,我能够以一种狡猾的方式解决此问题:

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

这将输出通过管道传递grep,如果根本没有任何输出,grep它将失败,但是仍然将其传递通过,因此在出现故障时您仍然可以在Rundeck中看到输出。

一个缺点是我相信您会丢失任何空白行,但我们不会输出任何空白,因此对我们来说没什么大不了的,它将使我们度过难关,直到我们可以更新应用程序以正确的退出代码终止为止。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.