作者 主題: 請要一個關於ping的Shell怎麼寫  (閱讀 4222 次)

0 會員 與 1 訪客 正在閱讀本文。

jaymsa

  • 活潑的大學生
  • ***
  • 文章數: 409
  • 性別: 男
    • 檢視個人資料
    • Jay's Blog
請要一個關於ping的Shell怎麼寫
« 於: 2007-12-19 10:31 »
抱歉~~小弟剛剛放到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回報,所以有了這樣的想法,還是大家有更好的建議?
Linux真好玩...博大精深!!
RHCE,ISO27001,ISO20000
http://jayclub.no-ip.org/jayblog

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
回覆: 請要一個關於ping的Shell怎麼寫
« 回覆 #1 於: 2007-12-19 10:54 »
"$TTL" -ne "  "

-ne 是數字的比較, 若果要檢查是否空字串應該

"$TTL" != ""

jaymsa

  • 活潑的大學生
  • ***
  • 文章數: 409
  • 性別: 男
    • 檢視個人資料
    • Jay's Blog
回覆: 請要一個關於ping的Shell怎麼寫
« 回覆 #2 於: 2007-12-19 11:16 »
引用
"$TTL" -ne "  "

-ne 是數字的比較, 若果要檢查是否空字串應該

"$TTL" != ""
Cool~~果然一語道破,感謝~~不然我昨天試了一天 :P
Linux真好玩...博大精深!!
RHCE,ISO27001,ISO20000
http://jayclub.no-ip.org/jayblog