我正在创建一个监视脚本,该脚本在 for 循环中查看来自多个主机的结果,然后回显 OK 或 NOT OK...如果所有结果都 OK,那么我想将消息合并为单个 OK 否则 NOT 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