2010/01/19

Published 1月 19, 2010 by with 0 comment

主機偵測是否存活,http or ping

說明:


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


Read More
Published 1月 19, 2010 by with 0 comment

透過批次指令下操作Switch

##switch operation, switch.sh
#!/bin/bash


function sys_open {


echo open 172.20.15.250
#Connect Switch
sleep 0.1
echo CIMswit
#input password
sleep 0.1
echo en
#
進入enable模式

sleep 0.1
echo CIMswit
#input password
sleep 0.1
echo "terminal length 0"
#不要有翻頁,一次顯示完
sleep 0.1

echo "show int status"
#show interface
狀態
echo""
sleep 0.1


}


sys_open | telnet | grep disabled | awk '{print $1}'>aa.txt
#
呼叫函數,並導到一個檔案中


 


參考檔案,裡頭還有判斷式:


http://portable.easylife.tw/1303?category=3


 


Read More