nagiosに複数の終了ステータスを返す

nagiosに複数の終了ステータスを返す

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 )

ただし、問題はループが1回実行され、2で終了し、警告は1つのノード用であり、残りのノードには警告を送信する必要があることです。これをスクリプトで書く方法はありますか?

答え1

Nagiosとその作業に慣れていませんが、一度に1つの終了コードしか必要ない場合は、スクリプトを少し変更して複数回実行する必要があります。

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

このセグメントを複数回実行できる場合は、複数の終了コードを受け取ります。

関連情報