nagios 플러그인용 쉘 스크립트를 작성하려고 합니다. Nagios에서 중요한 경고를 트리거해야 하는 실패한 노드 목록이 있습니다.
입력하다:
#cat file
OFFLINE
OFFLINE
OFFLINE
OFFLINE
내가 원하는 것은 모든 오프라인 노드(예: 2)의 종료 상태를 보내는 것입니다. 그리고 이것은 지금까지 내 코드입니다.
암호
while read -r output;
do
STATE=$(echo $output)
if [ $STATE == "OFFLINE" ]; then
echo "CRITICAL: STATE is $STATE"
exit 2
else
echo "OK " > /dev/null
fi
done< <( cat file )
그러나 문제는 루프가 한 번 실행되고 2로 종료되며 경고는 한 노드에 대한 것이고 나머지 노드에 대해서는 경고를 보내야 한다는 것입니다. 이것을 스크립트로 작성할 수 있는 방법이 있나요?
답변1
Nagios와 그 작업에 익숙하지 않지만 한 번에 하나의 종료 코드만 필요한 경우 스크립트를 약간 수정하고 여러 번 실행해야 합니다.
output=$(head -1 file) # read first line
sed -i -e '1,1d' file # delete the first line
STATE=$(echo $output)
if [ $STATE == "OFFLINE" ]; then
echo "CRITICAL: STATE is $STATE"
exit 2
else
echo "OK " > /dev/null
fi
이 세그먼트를 여러 번 실행할 수 있으면 여러 종료 코드를 받게 됩니다.