我正在处理一个自定义的Nagios脚本,它将监视cPanel以确保它正在运行并根据它从服务cpanel状态的输出中得到的状态返回状态。这是我有:如果else语句不正确的输出
##############################################################################
# Constants
cpanelstate="running..."
ALERT_OK="OK - cPanel is running"
ALERT_CRITICAL="CRITICAL - cPanel is NOT running"
###############################################################################
cpanel=$(service cpanel status | head -1)
if [ "$cpanel" = "$cpanelstate" ]; then
echo $ALERT_OK
exit 0
else
echo $ALERT_CRITICAL
exit 2
fi
exit $exitstatus
当我运行该脚本,这是输出我得到:
[email protected] [/home/mvelez]# /usr/local/nagios/libexec/check_cpanel
CRITICAL - cPanel is NOT running
当我运行该脚本,的cPanel正在运行,但这样的输出我得到。事实上,不管cPanel的状态报告如何,这都是输出结果。当我注释掉ELSE,ECHO和EXIT 2语句:
#else
# echo $ALERT_CRITICAL
# exit 2
它还给空白输出:
[email protected] [/home/mvelez]# /usr/local/nagios/libexec/check_cpanel
[email protected] [/home/mvelez]#
我不知道我没有做什么正确的,因为我很新的bash脚本,并尝试学习,因为我一直沿。非常感谢您的高度帮助!
从你的问题看来,你错过了一些基本的调试步骤;例如,你没有指出'$ cpanel' *的实际值是*,这表明你可能没有尝试打印出来看看? – ruakh
谢谢你的回复。 我认为该语句的输出将被发送到if语句。 如果我添加回显命令来打印出字符串,我怎么才能把它扔到if语句中,这样它可以被处理并给出正确的结束输出? – mvelez83
什么shell正在执行你的脚本?什么是你的脚本shebang行('#!/ bin/....')?如果没有,你的壳是什么?什么'服务cpanel状态'返回_interactively_?它是否可能向_stderr_报告(尽管在运行脚本时应该看到stderr输出)? – mklement0