Как отправить уведомление только в случае неполноты вывода задания

12

Мы используем rundeck для сканирования файлов журналов для службы и принимаем меры в зависимости от того, что там найдено. По сути, для каждого найденного элемента, для которого не существует записей, инициализируется git-репозиторий и вызывается несколько остальных конечных точек, но это не главное.

Мы настраиваем задание на выполнение по расписанию, скажем, каждые пару часов, и отправку уведомления о сбое, а также дополнительно об отправке уведомления об успешном выполнении только при выполнении хотя бы одного действия (т. Е. Сценарий оболочки в введенной задаче). цикл хотя бы один раз). Сценарий написан так, что он выдает выходные данные на стандартный вывод, только когда найдены элементы для действий.

Есть ли в rundeck способ вызвать уведомление с этим требованием? Или способ написать это без написания плагина с нуля?

Одним из возможных путей решения этой проблемы может быть отключение триггера уведомления о сбое и заставить скрипт возвращать ненулевое значение в случае, если элементы не выполняются, но мне это неудобно.

ᴳᵁᴵᴰᴼ
источник
Вывод действительно пустой, или он может иметь несколько пустых строк или возврат каретки?
Тенсибай
на самом деле он пуст с точки зрения bash; есть один шаг оболочки с моим сценарием, не уверен, что rundeck украсит его с выводом около
ᴳᵁᴵᴰᴼ
Будет ли вариант отправки уведомления из самого скрипта? И так, rundeck только уведомляет о сбое, и сценарий делает свое собственное уведомление "Я сделал что-то"?
Тенсибай
Это на самом деле хорошая идея!
ᴳᵁᴵᴰᴼ

Ответы:

7

То, о чем я мог думать, это:

Написание собственного плагина со страницы примера плагина уведомлений может помочь в адаптации примера кода почтового уведомления .

Отключите уведомления об успехе в rundeck и обработайте часть уведомления об успехе в самом скрипте. Таким образом, вы несете ответственность за предупреждение сценария о том, что он что-то сделал в нормальном состоянии, и ответственность за предупреждение сценария об отказе скрипта все равно лежит.

Tensibai
источник
1
Спасибо; когда вы получаете функцию, обернутую инструментом, находящимся перед вами, часто случается так, что вы забываете, что можете использовать его непосредственно…
ᴳᵁᴵᴰᴼ
1

Мне удалось немного обойти эту проблему, изменив команду на:

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

Это пропускает выходные данные grepи дает сбой, если вообще есть какие-либо выходные данные, но grepвсе же пропускает их, поэтому вы все равно можете увидеть выходные данные в Rundeck при сбое.

Одним из недостатков является то, что я считаю, что вы теряете все пустые строки, но мы не выводим никаких, поэтому для нас это не имеет большого значения, и это приведет нас к концу, пока мы не сможем обновить приложение, чтобы оно завершалось с правильным кодом выхода.

Malvineous
источник