shell編程-每三分鐘檢測服務器是否異常并郵件通知

cyjjkz1 8年前發布 | 6K 次閱讀 Shell

1、創建腳本文件monitorserver.sh, 腳本附在后面

2、使用crontab進行每三分鐘定時檢查

crontab -e

*/3 * * * * /.../monitorserver.sh

3、腳本使用說明


需要根據自己需要,填寫服務器,計數文件路徑,發送人郵箱和收件人郵箱,這里采用的是post請求,需要填寫傳參參數。





#!/bin/sh

#服務器

BASEURL=http://mysever.com

#計數文件路徑

COUNT="/home/monitor/serviceExists/production/count"

#Appq計數文件路徑

APPCOUNT="/home/monitor/serviceExists/production/appCount"

#控制郵件發送次數

NUMBER=3

#控制停止時間

NUM=7

monitoring_server(){


  if [ ! -f $1 ] ;then

touch $1

#插入數據

echo "0" > $1

#在第一行下面插入0,

sed -i '1a\0' $1

fi

#獲取count文件第二行數據,該數據是用來控制停止多少分鐘后再訪問,0表示發送接口請求,$NUM限制最大時間

total=$(sed -n '2p' "$1")

echo total:$total

echo Count_PATH:$1

#let "total=total+'0'"

if [ ${total} -eq 0 ];then

#獲取https狀態碼

http_code=$2

echo http_code:$http_code

#https狀態碼為200,表示請求成功

if [ $http_code == "200" ]

then

  #登錄成功后,將第一行數設置為0

  sed -i '1c\0' "$1"

  echo "服務正常"

  echo $6

else

   #獲取第一行數據

   count=$(sed -n '1p' "$1")

          echo $count

          #count變量+1

          let "count=count+"1""

          #重新設置第一行數據

          sed -i "1c\ $count" $1

          echo count:$count

        #判斷連續發生次數是否超過總數

       if [ ${count} -le $4 ]; then

       

 #第一郵箱是發送者,其他的郵箱是接受者,發送者需要在Linux環境下設置。mail設置鏈接:http://my.oschina.net/u/2473136/blog/608149

        echo -e '(本郵件是程序自動下發的,請勿回復!)\n\n' $5 '\n' $cnt | mail -s "警告:$5" -r fasongzheyouxiang@163.com shoujianrenyouxiang@163.com xxxx@163.com

        echo "$5發送郵件"

       else

      # 重新設置第一行,第二行數據

        sed -i '1c\0' $1

        sed -i '2c\1' $1

        echo "$5連續3次,30分鐘后再發送郵件"


       fi

echo $result


fi

#停止時間處理

elif [ ${total} -le $3 ];then

   total=$(sed -n '2p' "$1")

   let "total=total+"1""

   sed -i "2c\ $total" $1

   echo $total

else

   sed -i '2c\0' $1

   echo "重新監測服務"

fi

}

#郵件標題

title="商家后臺服務異常"

#獲取商家后臺接口請求成功參數

result=$(curl -d "username=XXXXXX&password=XXXXX" "$BASEURL/m/auth/login.do")

#商家后臺接口請求,獲取https狀態碼

http=$(curl -o /dev/null -s -w %{http_code} -d "username=XXXXXX&password=XXXXXX" "$BASEURL/m/auth/login.do")

#商家后臺服務監測

monitoring_server $COUNT $http $NUM $NUMBER $title $result


#郵件標題

Apptitle="商家App服務異常"

#獲取商家APP接口請求成功參數

AppResult=$(curl  -H "Content-type: application/json"  -d '{"username":"XXXXXXX","password":"XXXXX","imei":"a707644c-3f25-4abe-bb48-8d64ea49d1ea","deviceCode":"867271029123113"}' "$BASEURL/merchantuser/login.do")

#商家APP接口請求,獲取https狀態碼

App_http=$(curl -o /dev/null -s -w %{http_code} -H "Content-type: application/json"  -d '{"username":"XXXXXX","password":"XXXXXX","imei":"a707644c-3f25-4abe-bb48-8d64ea49d1ea","deviceCode":"867271029123113"}' "$BASEURL/merchantuser/login.do")

#商家App服務監測

monitoring_server $APPCOUNT $App_http $NUM $NUMBER $Apptitle $AppResult



 本文由用戶 cyjjkz1 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!