我正在尝试为 nagios 插件编写 shell 脚本。我有一个失败节点列表,我必须在其中触发 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 )
但问题是循环运行一次并以 2 退出,并且警报针对一个节点,而对于其余节点,我需要发送警报。有什么办法可以写这个脚本吗?
答案1
我不熟悉 Nagios 及其操作,但如果一次只需要一个退出代码,您将需要稍微修改脚本并运行多次。
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
如果您可以多次运行此段,您将收到多个退出代码。