說明:
1) 服務不中斷偵測
1.偵測週期(單位:秒)
2.服務中斷後的偵測週期
3.多人MAIL通知
4.啟用/停用 手機簡訊通知(需申辦台灣簡訊服務)
5.多人手機簡訊通知
6.自訂服務中斷報告訊息
7.啟用/停用 服務瞬斷判斷機制
2) 主機存活偵測
1.單次偵測頻率
3) WEB服務存活偵測
1.偵測檔案設定
2.偵測檔案嘗試次數設定
4) 服務瞬斷處理
1.服務中斷後,隔一次偵測週期再進行偵測
2.第一次中斷以MAIL告知
3.啟用/停用 確定中斷手機簡訊告知
執行方式:
1.互動式
bash test.sh
之後ctrl+z丟到背景
2.直接式
bash test.sh 服務 主機 &
執行程式:
###############test.sh
#!/bin/bash
#程式設計 哇哇&csliu chiahsin.liu@gmail.com
#程式版本 v1.0
#官方網站 http://easylife.idv.tw
#./README 程式功能說明
#./test.sh 主程式
#./ping 主機存活偵測設定檔
#./http WEB服務偵測設定檔
#變數設定
function conf {
rechk=`grep $1 $readfile | cut -d: -f1`
des_address=`grep $1 $readfile | cut -d: -f2`
des_name=`grep $1 $readfile | cut -d: -f3`
http_file=`grep $1 $readfile | cut -d: -f10`
time_try=`grep $1 $readfile | cut -d: -f4`
time_circle=`grep $1 $readfile | cut -d: -f5`
time_fail=`grep $1 $readfile | cut -d: -f6`
mailto=`grep $1 $readfile | cut -d: -f7`
subject=`grep $1 $readfile | cut -d: -f8`
sms=`grep $1 $readfile | cut -d: -f9`
#是否啟用簡訊服務
if [ $sms ] ; then
smsstat=smson
#台灣簡訊帳號
twsms=xxx.sms@twsms.com
#台灣簡訊密碼
twsmspasswd=xxx
else
smsstat=smsoff
fi
}
#簡訊通知
function smson {
echo -e "pw:$twsmspasswd\nmobile:$sms" | mail -s "$subject" $twsms,$mailto
}
#一般通知
function smsoff {
echo -e "$subject" | mail -s "$subject" $mailto
}
#是否啟用瞬斷偵測
function dochk {
if [ $rechk -eq 0 ] ; then
$action
if [ $? -ne $yn ] ; then
smsoff
sleep $time_circle
$action
if [ $? -ne $yn ] ; then
$smsstat
sleep $time_fail
else
sleep $time_circle
fi
else
sleep $time_circle
fi
elif [ $rechk -eq 1 ] ; then
$action
if [ $? -ne $yn ] ; then
$smsstat
sleep $time_fail
else
sleep $time_circle
fi
else
exit
fi
}
#主機存活偵測
function doping {
ping $des_address -c $time_try | grep -E '100% packet loss|error'
}
#WEB服務偵測
function dohttp {
wget -t $time_try -q $des_address/$http_file -O /dev/null
}
#互動式輸入
function mustbe {
read -p "what service?(ping, http): " sname
case $sname in
ping)
readfile="./ping"
action=doping
yn=1;;
http)
readfile="./http"
action=dohttp
yn=0;;
*)
echo "please..."; exit ;;
esac
read -p "which alias hostname?: " fname
if [ `grep $fname $readfile | wc -l` -eq 1 ] ; then
conf $fname
else
echo "find `grep $fname $readfile | wc -l` $fname setting in $readfile."; exit
fi
}
#引數判斷
if [ $1 ] && [ $2 ] ; then
if [ $1 = ping ] ; then
readfile="./ping"
action=doping
yn=1
elif [ $1 = http ] ; then
readfile="./http"
action=dohttp
yn=0
else
echo "$1 is not a valid service."; exit
fi
if [ `grep $2 $readfile | wc -l` -eq 1 ] ; then
conf $2
else
echo "find `grep $2 $readfile | wc -l`$fname setting in $readfile."; exit
fi
else
mustbe
fi
#不中斷偵測
while [ 0 ]
do
dochk
done
############http
以:作為欄位區隔,也代表各欄位中不可以再出現:,已免程式錯誤
主機存活偵測與WEB服務偵測設定內容大致相同,分開設定檔以便管理之用
欄位1 主機瞬斷判斷機制 0)啟用 1)停用
欄位2 偵測對象,網址及IP皆可
欄位3 偵測對象別名,不重複為前提
欄位4 偵測檔案嘗試次數,視情況調整,預設3
欄位5 偵測週期,以秒作為單位,視主機效能與針測對象調整
欄位6 服務中斷後的偵測週期,以秒作為單位,為節省簡訊費用而設定
欄位7 事件通知MAIL設定,多收信者以,區隔,至少一收件者
欄位8 事件通知內容設定,為服務正常以無特殊字元為主
欄位9 簡訊通知手機號碼,多用戶通知以,區隔,無設定號碼則為關閉簡訊服務
欄位10 WEB服務偵測檔案設定,請把檔案放在網站根目錄
0:portable.easylife.idv.tw:easylife-web:3:5:20:wawa@gmail.com:綠色工廠斷線 原因不明 請檢測::favicon.ico
1:group.supernet.com.tw:supernet:3:60:7200:wawa@gmail.com:網魚主機斷線囉 更換背景圖唷::favicon.ico
#############ping
以:作為欄位區隔,也代表各欄位中不可以再出現:,已免程式錯誤
主機存活偵測與WEB服務偵測設定內容大致相同,分開設定檔以便管理之用
欄位1 主機瞬斷判斷機制 0)啟用 1)停用
欄位2 偵測對象,網址及IP皆可
欄位3 偵測對象別名,不重複為前提
欄位4 偵測頻率,視情況調整,預設10
欄位5 偵測週期,以秒作為單位,視主機效能與針測對象調整
欄位6 服務中斷後的偵測週期,以秒作為單位,為節省簡訊費用而設定
欄位7 事件通知MAIL設定,多收信者以,區隔,至少一收件者
欄位8 事件通知內容設定,為服務正常以無特殊字元為主
欄位9 簡訊通知手機號碼,多用戶通知以,區隔,無設定號碼則為關閉簡訊服務
欄位10 WEB服務使用,主機存活偵測服務為保留欄位
0:192.168.0.1:router:2:5:20:wawa@gmail.com:斷線::
1:www.issue.net.tw:issue:10:60:7200:wawa@gmail.com:易石斷線囉 我的偵測也斷囉::
檔案參考:http://portable.easylife.tw/758?category=3