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