작업 출력이 비어 있지 않은 경우에만 알림을 보내는 방법


12

rundeck을 사용하여 서비스의 로그 파일을 스캔하고 발견 된 내용에 따라 조치를 취합니다. 기본적으로 레코드가 존재하지 않는 발견 된 각 항목에 대해 git 저장소가 초기화되고 몇 개의 나머지 엔드 포인트가 호출되지만 요점이 아닙니다.

작업을 예약 된대로 실행하고, 두 시간마다 말하고, 실패에 대한 알림을 보내며, 최소한 하나 이상의 조치가 수행 된 경우에만 성공에 대한 알림을 보내도록 설정합니다 (예 : 작업의 쉘 스크립트가 입력 됨) 적어도 한 번 루프). 스크립트는 조치 할 항목을 찾을 때만 stdout에서 출력을 내도록 작성됩니다.

rundeck에서이 요구 사항으로 알림을 트리거하는 방법이 있습니까? 또는 처음부터 플러그인을 작성하지 않고 스크립트를 작성하는 방법은 무엇입니까?

한 가지 가능한 해결 방법은 실패 알림 트리거를 끄고 항목이없는 경우 스크립트가 0이 아닌 값을 반환하도록하는 것입니다.


출력이 실제로 비어 있습니까? 아니면 블랑크 라인이나 캐리지 리턴이 있습니까?
Tensibai

bash 관점에서 볼 때 비어 있습니다. 내 스크립트를 하나의 쉘 단계가, 확실하지 내가 rundeck은 약 출력을 장식 것
ᴳᵁᴵᴰᴼ

스크립트 자체에서 알림을 보내는 것이 옵션입니까? 따라서 rundeck은 실패에 대해서만 통지하고 스크립트는 "I 무언가를 했음"통지를 수행합니까?
Tensibai

실제로 좋은 생각입니다!
ᴳᵁᴵᴰᴼ

답변:


7

내가 생각할 수있는 방법은 다음과 같습니다.

알림 플러그인 예제 페이지 에서 자신의 플러그인을 작성하여 예제 메일 알림 코드를 수정 하는 방법이 될 수 있습니다.

rundeck에서 성공 알림을 비활성화하고 스크립트 자체에서 성공 알림 부분을 처리합니다. 이렇게하면 정상적인 상태에서 무언가를 경고하고 스크립트 실패를 경고하는 것은 여전히 ​​책임입니다.


1
감사; 당신은 당신이 앞에있는 도구에 의해 포장 기능을 얻을 때, 종종 당신이 그것을 직접 갈 수 잊어 너무 일반적입니다 ....
ᴳᵁᴵᴰᴼ

1

명령을 다음과 같이 변경 하여이 문제를 약간 회피 할 수있었습니다.

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

이것은 출력을 파이프하고 출력 grep이 있으면 실패하지만 grep여전히 통과하므로 실패시 Rundeck에서 출력을 계속 볼 수 있습니다.

한 가지 단점은 빈 줄을 잃어 버린다고 생각하지만 우리에게 큰 도움이되지 않으며 앱을 업데이트하여 적절한 종료 코드로 종료 할 수있을 때까지 우리를 뒤흔들 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.