您在這裡

Linux下檢測服務器Ping值的Shell腳本

James Qi 在 2013年11月18日 - 10:13 發表

  這個月我們連續增加了4台國外服務器,讓每台服務器的負載更低一些,這樣網民和搜索引擎訪問更順暢,利于流量和廣告收入的提升。

  我今年早幾個月曾經在網上找了一段檢測Ping的代碼,稍微改了一下适應我們的需要,已經用了幾個月,極少數遇到某服務器ping不通的情況也得到了報警通知。今天又找出來加了一些新服務器的IP和域名,并在程序中加了一些注釋,checkping.sh程序如下:

#!/bin/sh
####################
#服務器ping測試程序
#James Qi 2013
#循環檢測各台服務器,在指定的ping次數中丢失的必須小于某個設定值,如果大于則說明有問題,發郵件通知報警
#在/etc/crontab中設定本程序的執行周期
####################
#

#參數設置
COUNT=100 #每台服務器測試ping的次數
MAX=90 #其中最多無法ping通的次數
HOST=(#服務器列表,IP地址或者域名
219.140.x.x
219.140.xx.xx
219.140.xxx.xxx
falcon000.startdedicated.com
eagle000.startdedicated.com
hawk000.startdedicated.com
)

#循環檢測
for ipadd in "${HOST[@]}"
do
  timing=`date +%Y/%m/%d/%H:%M:%S`
  ping $ipadd -c $COUNT > 1ping.log
  losspag=`grep "packet loss" 1ping.log |awk '{print $6}' |sed 's/%//g'`
  if [ $losspag -ge $MAX ] ;
  then
    echo  $timing > tmp.log
    echo -n $ipadd >> tmp.log
    echo -n "packet loss is more than $MAX of $COUNT">> tmp.log
    cat /root/tmp.log | mail -s "$ipadd ping packet loss is more then $MAX of $COUNT" 133xxxxxxxx@189.cn
  else
    rm -f tmp.log
  fi
done

  在/etc/crontab中設置:

*/6 * * * * root sh /root/checkping.sh &

  也就是每6分鐘執行checkping.sh一次。

  這個能對服務器的監控起到一定作用。注意有時國内到國外的線路很差,也會造成報警,我加大了ping的次數到100、最多可以丢失90次來盡量消除短暫的網絡不穩帶來的影響,也可以在國外某台服務器上單獨運行一個這個程序來專門檢測國外服務器群。

自由标簽:

回應

發表新回應

Plain text

  • 不允許使用 HTML 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。