我正在處理一個自定義的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