導讀 | 監控網站URL是否正常最多見的方法莫過於wget和curl命令了,這兩個命令都是很是強大的,強大到網友查看幫助都無從選擇的地步了,今天呢,老男孩老師正好錄製Shell編程實戰課程。 |
wget命令html
wget命令的參數很是多,至少也有數十個, 可是運維工做中經常使用的並很少,老男孩老師把最有用的列表以下。linux
wget命令 下載網頁或文件 --spider 模擬爬蟲的行爲去訪問網站,但不會下載網頁 -q, --quiet 安靜的訪問,禁止輸出,相似-o /dev/null功能 -o, --output-file=FILE 記錄輸出到文件 -T, --timeout=SECONDS 訪問網站的超時時間 -t, --tries=NUMBER 當網站異常時重試網站的次數
實際監控方法以下:利用wget命令返回值肯定網站是否正常web
[root@oldboy ~]# wget --spider -T 5 -q -t 2 www.oldboyedu.com [root@oldboy ~]# echo $? #< ==利用返回值肯定網站是否正常。 0
curl命令編程
curl命令的參數比wget的參數還多,但運維中經常使用的參數也並很少,所以也是列表以下:bash
curl命令 訪問網站url -I/--head 顯示響應頭信息 -m/--max-time 訪問超時的時間 -o/--output 記錄訪問信息到文件 -s/--silent 沉默模式訪問,就是不輸出信息 -w/--write-out 以固定特殊的格式輸出,例如:%{http_code},輸出狀態碼
實際監控方法運維
一、利用curl命令返回值肯定網站是否正常curl
[root@oldboy ~]# curl -s -o /dev/null www.oldboyedu.com [root@oldboy ~]# echo $? 0
二、獲取命令執行後的狀態碼(200表示正常)ide
[root@oldboy ~]# curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null www.baidu.com 200
解答: 方法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的腳本就會很輕鬆了。