2016-08-09 13 views
2

Tomcat 8が動作しているかどうかチェックする必要があります。このため私は以下のスクリプトを使用しています。centos 7 -eq:単項演算子が期待される

#!/bin/bash 

statuscode=$(wget --server-response http://localhost:8080 2>&1 | awk '/^ HTTP/{print $2}') 

if [ $statuscode -eq 200 ] 
then 
    echo "TOMCAT OK" 
    exit 0 
else 
    echo "TOMCAT CRITICAL" 
    exit 2 
fi 

Tomcatの8スクリプトがエラーなしで実行されて、その後実行されている場合、私はCentOSの7

にこのスクリプトを実行します。

にTomcat 8は、スクリプトはこの問題を解決するために私を助けてください、次のエラー

line 5: [: -eq: unary operator expected 

で実行されて停止した場合。

+1

を投げます。 'if'条件の前に変数を' echo'することによってデバッグしようとします。 – fedorqui

+0

@fedorquiはいtomcatが停止したとき$ statuscodeが空です。どのように私はこれを処理できますか? – user3441151

+0

前に空の変数チェックを追加することができます。 –

答えて

2

期待される出力と比較する前に、変数が空でないことを確認してください。

#!/bin/bash 

statuscode=$(wget --server-response http://localhost:8080 2>&1 | awk '/^ HTTP/{print $2}') 

if [ -n "$statuscode" ] && [ $statuscode -eq 200 ] 
then 
    echo "TOMCAT OK" 
    exit 0 
else 
    echo "TOMCAT CRITICAL" 
    exit 2 
fi 
+0

私のtomcat 8サービスが実行されている場合、 "wget --server-response http:// localhost:8080 2>&1 | awk '/^HTTP/{print $ 2}'"はいつも200または何か他の値を与えますか? – user3441151

+0

サービスが実行されているかどうかを確認するには、より良い方法が必要です。 'systemctl'コマンドのように –

0

これを試してください。

からstatusCodeが空の場合、 `$は空の文字列または奇妙な何かに読み込まれますstatuscode`ためです-eq: unary operator expected

#!/bin/bash 
{ 
statuscode=$(wget --server-response http://localhost:80 2>&1 | awk '/^ HTTP/{print $2}') 

if [ -z "$statuscode" ] 
then 
echo "TOMCAT CRITICAL"; 
exit 2; 
else 
    if [ $statuscode -eq 200 ] 
    then 
    echo "TOMCAT OK"; 
    exit 0; 
    fi 
fi 
} 
関連する問題