1. 程式人生 > >使用Shell指令碼程式監控網站URL是否正常

使用Shell指令碼程式監控網站URL是否正常

導讀 監控網站URL是否正常最常見的方法莫過於wget和curl命令了,這兩個命令都是非常強大的,強大到網友檢視幫助都無從選擇的地步了,今天呢,老男孩老師正好錄製Shell程式設計實戰課程。

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

curl命令

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

curl命令 	 訪問網站url
 -I/--head 	 顯示響應頭資訊
 -m/--max-time 	 訪問超時的時間
 -o/--output 	 記錄訪問資訊到檔案
 -s/--silent 	 沉默模式訪問,就是不輸出資訊
 -w/--write-out 	 以固定特殊的格式輸出,例如:%{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

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的指令碼就會很輕鬆了。

原文來自: https://www.linuxprobe.com/monitor-web-url.ht