for 루프에서 여러 호스트의 결과를 확인한 다음 OK 또는 NOT OK를 에코하는 모니터링 스크립트를 만들고 있습니다. 모든 결과가 OK이면 메시지를 단일 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
첫 번째 오류가 발생한 후 한 줄을 인쇄하고, HOST
오류가 없으면 한 줄을 인쇄합니다.OK
HOSTs