Як надсилати сповіщення лише у випадку, якщо вихідні завдання не порожні


12

Ми використовуємо rundeck для того, щоб сканувати логіни для послуги та вживати заходів залежно від того, що там знайдено. В основному, для кожного знайденого елемента, для якого записів не існує, репозиторій git ініціалізується і викликається кілька кінцевих точок відпочинку, але це не в цьому суть.

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

Чи є спосіб у рундеку викликати сповіщення з цією вимогою? Або спосіб його скриптувати без написання плагіна з нуля?

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


Чи вихід справді порожній, чи може мати якісь простірні лінії або повернення каретки?
Тенсібай

afaics порожній, з точки зору башти; є один крок оболонки з моїм сценарієм, не впевнений, що я рундек би прикрасив його результатами навколо
ᴳᵁᴵᴰᴼ

Можливо, надіслати повідомлення із самого сценарію? І так rundeck повідомляє лише про помилку, а сценарій робить своє власне сповіщення "Я щось зробив"?
Тенсібай

Це насправді гарна ідея!
ᴳᵁᴵᴰᴼ

Відповіді:


7

Я міг би придумати:

Написання власного плагіна зі сторінки прикладу плагінів сповіщень , адаптування прикладу коду повідомлення про поштову допомогу може бути способом.

Вимкнення сповіщень про успіх у режимі роботи та обробляти частину сповіщень про успіх у вашому сценарії. Таким чином, це ваша відповідальність сценарію, щоб попередити, що він щось зробив у звичайному стані, і все ще несе відповідальність попереджати вас, що сценарій не вдався.


1
Дякую; коли ви отримуєте функцію, загорнуту інструментом, який у вас є попереду, так часто буває, що іноді забути, що ви можете перейти безпосередньо до неї
ᴳᵁᴵᴰᴼ

1

Мені вдалося подолати цю проблему трохи хитро, змінивши команду на:

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

Це передає вихід grepі провалюється, якщо є якийсь вихід, але grepвсе-таки передає його, так що ви все одно можете побачити вихід у Rundeck після відмови.

Один недолік полягає в тому, що я вважаю, що ви втрачаєте будь-які порожні рядки, але ми не виводимо жодної великої для нас справи, і це буде нас доводити до тих пір, поки ми не зможемо оновити додаток, щоб закінчитися правильним кодом виходу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.