2014-01-22 42 views
-1

我想寫一個腳本來自動化我的服務器審計頭痛。我需要檢查服務器上運行的Web服務器,然後查找它的正常運行時間。但是,儘管我能夠找到網絡服務器,但我無法將它與我保存的變量進行比較。以下是我遇到的問題。這是在bash中。Bash腳本來比較服務器審計不工作的web服務器正常運行時間

Webserver=`curl -Is $(hostname -i) | grep "Server" | awk {'print $2'} | cut -d'/' -f1` 

if [ "$Webserver" == "Apache" ] 

then 
echo "Webserver Apache Uptime: $(/etc/init.d/httpd status | grep "Server uptime")" >> $TEMPFILE 

else if [ "$Webserver" == "LiteSpeed" ] 

then 
echo "Webserver Litespeed: $(head -n4 /tmp/lshttpd/.rtreport | grep UPTIME)" >> $TEMPFILE 

else 
echo "Unidentified Webserver" 

注:我在/ tmp目錄

+0

你不是'fi'線糊,或者是他們實際失蹤? – BRFennPocock

回答

0

你的語法是錯誤保存到臨時文件的結果。您需要elif而不是else。您的if聲明末尾還有您的姓名fi。此外,對於它的價值,您應該將$TEMPFILE換成雙引號,以防止包含空格的文件出現分詞。

if [[ "$Webserver" == "Apache" ]]; then 
    echo "Webserver Apache Uptime: $(/etc/init.d/httpd status | grep "Server uptime")" >> "$TEMPFILE" 
elif [ "$Webserver" == "LiteSpeed" ]; then 
    echo "Webserver Litespeed: $(head -n4 /tmp/lshttpd/.rtreport | grep UPTIME)" >> "$TEMPFILE" 
    echo "Unidentified Webserver" 
fi 

如果你需要一些很好的參考,這是兩個我最喜歡的:

+0

謝謝隊友......我已經修復了它,雖然我只是用戶[[「$ Webserver」=='*'「Apache」'*']]和fi在那裏我忘了粘貼它。 curl命令的輸出有一些我猜的空間,因此*有助於匹配任何字符串,而不是我猜測的絕對詞。 – user3221982

相關問題