抱歉~~小弟剛剛放到Linux板上去了,好像不能自行移動,小弟自首......各位好:
小弟日前想寫一個shell來ping主機,看看主機有無掛掉,但目前一直存在一個問題,當主機有回應時我的程式會是正常的,但無回應的話,我的程式有就會有錯誤,但是結果還是有出來,可以請各位前輩幫忙看一下修正一下這個錯誤!
程式碼:
#/bin/sh
#$Ping URL
URL="tw.yahoo.com"
#for (( i=1; i<=10; i++))
#do
TTL=`ping -c 200 -w 2 $URL | head -2 | tail -1 | cut -d ':' -f 2 | cut -d ' ' -f 3 | cut -d '=' -f 2`
if [ "$TTL" -ne " " ]; then
echo "icmp="$icmp
echo "TTL="$TTL
echo "URL="$URL
echo "I="$i
echo "Good"
else
echo "icmp="$icmp
echo "TTL="$TTL
echo "URL="$URL
echo "I="$i
echo "Bad"
fi
#done
其中的許多echo是我用來檢測的,但主要就是如果ping到主機是在的就會出現如下:
icmp=
TTL=57
URL=tw.yahoo.com
I=
Good
但如果主機不再就會出現:
./ping.sh: line 7: [: : integer expression expected
icmp=
TTL=
URL=192.168.0.1
I=
Bad
就是會多了
./ping.sh: line 7: [: : integer expression expected此行,我的判斷是因為ping不到所以沒有值,於是if [ "$TTL" -ne " " ]; then這裡的比對就會出現問題,如果我將$TTL -ne "0"或null也是會出現,請問各位前輩我該如何修改此程式,或是各位有更好的寫法? 啥
因為我看了
http://phorum.study-area.org/index.php/topic,44854.0.html此篇,想將ping或之後更多偵測各服務狀態,用msn回報,所以有了這樣的想法,還是大家有更好的建議?