linux下利用curl監控網頁shell指令碼

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   os   ar   使用   for   

#!/bin/bash

smail() {
mail -s "$1" [email protected] <<EOF
$1
$2
====
report time: `date +"%F %T"`
current user: `whoami`
shell script: `echo $0`
====
EOF
}

ssms() {
/usr/local/feixin/fetion --mobile=150000000 --pwd=******** --to=13810000000 --msg-gb="fx $1"
}

cd /home/maintain/gaojianwei/Script/
File=Monitor_IP.txt
sed -i /.*/d Curl_Out.txt
sed -i /.*/d Curl_Out_1.txt

sed -e ‘/^#/d;/^$/d‘ ${File} | while read Ip Port URL
do
/usr/bin/curl --connect-timeout 8 --max-time 12 -o /dev/null -s -w %{time_total}:%{size_download}:%{http_code} http://${URL} -x ${Ip}:${Port} >> Curl_Out.txt
echo ":${Ip}:${URL}" >> Curl_Out.txt
done

awk -F":" ‘{if(($1*1000<8000)&&($2>0)&&($3=="200"||$3=="301"||$30=="302"||$3=="401")) {} else {print $0 >> "Curl_Out_1.txt"}}‘ Curl_Out.txt

if [ -s Curl_Out_1.txt ];then
Warning="`awk ‘{printf("%s#",$0)}‘ Curl_Out_1.txt`"
ssms ${Warning}
smail CURL_Monitor ${Warning}
fi 備忘:
curl是一個命令列下的http下載工具,類似wget。與wget相似,它也可以通過發送指定的http header到伺服器來判斷服務的狀態。這裡介紹一個使用curl監控頁面可用性的方法。可以使用下面的命令,來採集頁面的狀態代碼。如果這條命令返回結果為200,說明服務正常。如果返回的是其他的頁面,說明異常。curl -o /dev/null -s -w %{http_code} http://zys.8800.org/-o 參數,是把下載的所有內容都重新導向到/dev/null,-s命令,是屏蔽了curl本身的輸出,而-w參數,是根據我們自己的需要,自訂了curl的輸出格式。使用這條命令,再配合郵件和簡訊,就可以實現對頁面的可用性監控。將這個程式部署在全國各地的機器上,就可以對cdn網路進行可用性監控。

curl只返回伺服器響應狀態,不返回內容,返回200是正常的,其它的不正常,簡單的命令如下:

[[email protected] ~]$ echo `curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code} "http://www.coomix.net/index.jsp"`
200
[[email protected] ~]$ echo `curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code} "http://www.coomix.net/index5.jsp"`
404

====================================================

監控機器列表檔案:

server.list

server1

server2

server3

 

建立監控指令碼: webstatus.sh

 

#!/bin/sh
monitor_dir=/home/admin/monitor/
if [ ! -d $monitor_dir ]; then
    mkdir $monitor_dir
fi
cd $monitor_dir
web_stat_log=web.status
if [ ! -f $web_stat_log ]; then
   touch $web_stat_log
fi
server_list_file=server.list
if [ ! -f $server_list_file ]; then
   echo "`date ‘+%Y-%m-%d %H:%M:%S‘` ERROR:$server_list_file NOT exists!" >>$web_stat_log
exit 1
fi
#total=`wc -l $server_list_file|awk ‘{print $1}‘`
for website in `cat $server_list_file`
do
   url="http://$website/app.htm"
   server_status_code=`curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code} "$url"`
   if [ "$server_status_code" = "200" ]; then 
        echo "`date ‘+%Y-%m-%d %H:%M:%S‘` visit $website status code 200 OK" >>$web_stat_log
   else 
        echo "`date ‘+%Y-%m-%d %H:%M:%S‘` visit $website error!!! server can‘t connect at 10s or stop response at 10 s, send alerm sms ..." >>$web_stat_log
        echo "!app alarm @136xxxxxxxx  server:$website can‘t connect at 10s or stop response at 10s ..." | nc smsserver port &
   fi
done
exit 0

 

主要是利用 curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code} "$url" 返回狀態代碼是否200,如果10s沒有返回200狀態代碼,則發警報

 

最後讓linux 定時執行指令碼:

crontab -e

*/10 * * * * /home/admin/app/bin/webstatus.sh

這樣每隔10分鐘就會執行一次

這個是另外一種指令碼寫法:

#!/bin/bash

while read URL
  do
    echo `date`
    result=`curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code}  $URL`
    test=`echo $result`
    if [[  "$test" = "200"  ]]
      then
        echo "$URL is ok"
    else
      echo "test err"
/usr/sbin/sendmail -t << EOF
From:SD-Detect
To:[email protected],[email protected]
Subject:Detected $URL
------------------------------
${URL} is err!!
------------------------------
EOF
    fi
  done < /root/jiankong/httplist.txt

linux下利用curl監控網頁shell指令碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.