将多个退出状态返回给 nagios

将多个退出状态返回给 nagios

我正在尝试为 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

如果您可以多次运行此段,您将收到多个退出代码。

相关内容