教你如何監控網站URL是否正常

IT技術精選文摘發表於2018-06-14

640?wx_fmt=gif

監控網站URL是否正常最常見的方法莫過於wgetcurl命令了,這兩個命令都是非常強大的,強大到網友檢視幫助都無從選擇的地步了

1.1  wget命令

wget命令的引數非常多,至少也有數十個, 但是運維工作中常用的並不多,老男孩老師把最有用的列表如下。

wget命令

下載網頁或檔案

--spider

模擬爬蟲的行為去訪問網站,但不會下載網頁

-q,    --quiet

安靜的訪問,禁止輸出,類似-o /dev/null功能

-o,    --output-file=FILE

記錄輸出到檔案

-T,    --timeout=SECONDS

訪問網站的超時時間

-t,    --tries=NUMBER

當網站異常時重試網站的次數

實際監控方法如下:利用wget命令返回值確定網站是否正常

[root@oldboy ~]# wget --spider -T 5 -q -t 2 www.oldboyedu.com

[root@oldboy ~]# echo $? #<==利用返回值確定網站是否正常。

0

1.2  curl命令

curl命令的引數比wget的引數還多,但運維中常用的引數也並不多,因此也是列表如下:

curl命令

訪問網站url

-I/--head

顯示響應頭資訊

-m/--max-time <seconds>

訪問超時的時間

-o/--output <file>

記錄訪問資訊到檔案

-s/--silent

沉默模式訪問,就是不輸出資訊

-w/--write-out <format>

以固定特殊的格式輸出,例如:%{http_code},輸出狀態碼

 

實際監控方法如下:

1、利用curl命令返回值確定網站是否正常

[root@oldboy ~]# curl -s -o /dev/null www.oldboyedu.com

[root@oldboy ~]# echo $?

0

2、獲取命令執行後的狀態碼(200表示正常)

[root@oldboy ~]# curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null  www.baidu.com

200

1.3 開發Shell指令碼實現監控指定的URL是否正常

解答:

方法1

#!/bin/sh

function usage() {     #<==幫助函式

    echo $"usage:$0 url"

    exit 1

}

function check_url() { #<==檢測URL函式。

    wget --spider -q -o /dev/null --tries=1 -T 5 $1

#<==採用wget返回值方法,這裡的$1就是函式傳參。

    #curl -s -o /dev/null $1 #<==採用curl返回值方法也是可以的。

    if [ $? -eq 0 ]

    then

        echo "$1 is yes."

        exit 0

    else

        echo "$1 is fail."

        exit 1

    fi

}

function main() {   #<==主函式。

     if [ $# -ne 1 ]   #<==如果傳入的多個引數,則列印幫助函式,提示使用者。

     then

         usage

     fi

     check_url $1     #<==接收函式的傳參,即把結尾的$*傳到這裡。

}

main $*            #<==這裡的$*就是把命令列接收的所有引數作為函式引數傳給函式內部,常用手法。

實踐結果:

[root@oldboy ~]# sh checkurl.sh www.oldboyedu.com

www.oldboyedu.com is ok

[root@oldboy ~]# sh checkurl.sh www.baidu.com

www.baidu.com is ok

[root@oldboy ~]# sh checkurl.sh 10.0.0.8

10.0.0.8 is fail

方法2

[root@oldboy ~]# cat checkurl1.sh

#!/bin/bash

##############################################################

# File Name: checkurl.sh

# Version: V1.0

# Author: oldboy

# Organization: www.oldboyedu.com

# Created Time : 2018-06-07 18:29:19

##############################################################

usage(){

    echo "Usage:$0 url"

    exit 1

}

checkurl(){

    local num=`curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null|grep 200|wc -l`

    if [ $num -eq 1 ] #<==採用獲取狀態碼,並轉為數字的方式判斷,如果301認為正確也可以加上egrep過濾。

    then

         echo "$1 is ok"

    else

         echo "$1 is fail"

    fi

}

main(){

    if [ $# -ne 1 ]

    then

        usage

    fi

    checkurl $1

}

main $*

實踐結果:

[root@oldboy ~]# sh checkurl.sh www.oldboyedu.com

www.oldboyedu.com is ok

[root@oldboy ~]# sh checkurl.sh www.baidu.com

www.baidu.com is ok

[root@oldboy ~]# sh checkurl.sh 10.0.0.8

10.0.0.8 is fail

如果網友能讀懂本文,相信以後再寫監控網站URL的指令碼就會很輕鬆了。

公眾號推薦:

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg


相關文章