forループで複数のホストの結果を確認し、OKまたはNOT OKをエコーする監視スクリプトを作成しています。すべての結果が OK の場合、メッセージを 1 つの OK にマージし、そうでなければ OK ではありません。現在有効な方法は次のとおりです。
スクリプト:
for HOST in $HOST1 $HOST2 $HOST2
do
HEARTBEAT=$(${LDAPSEARCH} -h ${HOST} -p ${PORT} -D "${USER}" -w $${PASS} -b "" -s base "(objectClass=*)" | grep dn: | sed 's/dn:/dn/g')
if [ $HEARTBEAT = 'dn' ]; then
echo "ok"
else
echo "NOT OK"
fi
done
出力:
$OK
$OK
$OK
それ以外の場合は、次のように出力されます。
$NOT OK
$NOT OK
$NOT OK
希望の出力:
$OK
else
$NOT OK
答え1
どうですか - スクリプトを少し再構成してください。
#!/usr/bin/env bash
for HOST in $HOST1 $HOST2 $HOST2
do
HEARTBEAT=$(${LDAPSEARCH} -h ${HOST} -p ${PORT} -D "${USER}" -w $${PASS} -b "" -s base "(objectClass=*)" | grep dn: | sed 's/dn:/dn/g')
if [ ! $HEARTBEAT = 'dn' ]; then
echo "NOT OK"
exit 1
fi
done
echo "ok"
スクリプトは、NOT OK
最初のエラーが発生した後に1行を印刷し、HOST
エラーがない場合は1行を印刷します。OK
HOSTs