Como enviar notificação apenas no caso de a saída do trabalho não estar vazia


11

Estamos usando o rundeck para verificar arquivos de log em busca de um serviço e executar ações dependendo do que for encontrado lá. Basicamente, para cada item encontrado, para o qual um registro não existe, um repositório git é inicializado e alguns pontos de extremidade restantes são chamados, mas esse não é o ponto.

Estamos configurando o trabalho para ser executado conforme o planejado, digamos a cada duas horas e para enviar uma notificação de falha e, adicionalmente, para enviar uma notificação de êxito somente quando pelo menos uma ação tiver sido executada (ou seja, o script de shell na tarefa inserida loop pelo menos uma vez). O script é escrito para que somente emita saída no stdout quando itens a serem acionados são encontrados.

Existe uma maneira de desdobrar para acionar a notificação com esse requisito? Ou uma maneira de escrever sem escrever um plugin a partir do zero?

Uma solução possível seria desativar o gatilho de notificação de falha e fazer com que o script retorne diferente de zero, caso nenhum item seja acionado, mas não me sinto confortável em fazer isso.


A saída está realmente vazia ou pode ter algumas linhas em branco ou um retorno de carro?
Tensibai

afaics está vazio, de uma perspectiva bash; há uma única etapa shell com o meu script, não tenho certeza i Rundeck iria decorá-lo com saída em torno
ᴳᵁᴵᴰᴼ

Enviar a notificação do próprio script seria uma opção? E assim, o rundeck apenas notifica a falha e o script faz a sua própria notificação "eu fiz alguma coisa"?
Tensibai

Na verdade, é uma boa ideia!
ᴳᵁᴵᴰᴼ

Respostas:


6

A maneira que eu pude pensar é:

Escrever seu próprio plug-in, na página de exemplo do plug-in de notificação , adaptar o código de notificação de email de exemplo pode ser uma maneira.

Desabilitando as notificações de sucesso com um desdobramento e manipulando a parte da notificação de sucesso no próprio script. Dessa forma, é sua responsabilidade do script avisar que ele fez algo em estado normal e ainda é uma responsabilidade excessiva avisá-lo de que o script falhou.


1
Obrigado; quando você obtém um recurso envolvido pela ferramenta que você tem à frente, às vezes é tão comum esquecer que você pode
acessá-

1

Consegui solucionar esse problema de uma maneira desonesta, alterando o comando para:

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

Isso canaliza a saída grepe falha, se houver alguma saída, mas grepainda a passa, assim você ainda poderá ver a saída em Rundeck após falha.

Uma desvantagem é que acredito que você perde todas as linhas em branco, mas não produzimos nenhuma, portanto, não é grande coisa para nós, e isso nos afetará até que possamos atualizar o aplicativo para terminar com um código de saída adequado.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.