這篇文章給大家介紹怎么使用Shell腳本程序監(jiān)控網(wǎng)站URL是否正常,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的沁水網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!監(jiān)控網(wǎng)站URL是否正常最常見的方法莫過于wget和curl 命令 了,這兩個(gè) 命令 都是非常強(qiáng)大的,強(qiáng)大到網(wǎng)友查看幫助都無從選擇的地步了,今天呢,老男孩老師正好錄制 Shell 編程實(shí)戰(zhàn)課程。 |
wget命令
wget命令的參數(shù)非常多,至少也有數(shù)十個(gè), 但是運(yùn)維工作中常用的并不多,老男孩老師把最有用的列表如下。
wget命令 下載網(wǎng)頁或文件 --spider 模擬爬蟲的行為去訪問網(wǎng)站,但不會(huì)下載網(wǎng)頁 -q, --quiet 安靜的訪問,禁止輸出,類似-o /dev/null功能 -o, --output-file=FILE 記錄輸出到文件 -T, --timeout=SECONDS 訪問網(wǎng)站的超時(shí)時(shí)間 -t, --tries=NUMBER 當(dāng)網(wǎng)站異常時(shí)重試網(wǎng)站的次數(shù)
實(shí)際監(jiān)控方法如下:利用wget命令返回值確定網(wǎng)站是否正常
[root@oldboy ~]# wget --spider -T 5 -q -t 2 www.oldboyedu.com [root@oldboy ~]# echo $? #< ==利用返回值確定網(wǎng)站是否正常。 0
curl命令
curl命令的參數(shù)比wget的參數(shù)還多,但運(yùn)維中常用的參數(shù)也并不多,因此也是列表如下:
curl命令 訪問網(wǎng)站url -I/--head 顯示響應(yīng)頭信息 -m/--max-time 訪問超時(shí)的時(shí)間 -o/--output 記錄訪問信息到文件 -s/--silent 沉默模式訪問,就是不輸出信息 -w/--write-out 以固定特殊的格式輸出,例如:%{http_code},輸出狀態(tài)碼
實(shí)際監(jiān)控方法
1、利用curl命令返回值確定網(wǎng)站是否正常
[root@oldboy ~]# curl -s -o /dev/null www.oldboyedu.com [root@oldboy ~]# echo $? 0
2、獲取命令執(zhí)行后的狀態(tài)碼(200表示正常)
[root@oldboy ~]# curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null www.baidu.com 200
3 開發(fā) Shell 腳本 實(shí)現(xiàn)監(jiān)控指定的URL是否正常
解答: 方法1: #!/bin/sh function usage() { #< ==幫助函數(shù) echo $"usage:$0 url" exit 1 } function check_url() { #<==檢測(cè)URL函數(shù)。 wget --spider -q -o /dev/null --tries=1 -T 5 $1 #<==采用wget返回值方法,這里的$1就是函數(shù)傳參。 #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() { #<==主函數(shù)。 if [ $# -ne 1 ] #<==如果傳入的多個(gè)參數(shù),則打印幫助函數(shù),提示用戶。 then usage fi check_url $1 #<==接收函數(shù)的傳參,即把結(jié)尾的$*傳到這里。 } main $* #<==這里的$*就是把命令行接收的所有參數(shù)作為函數(shù)參數(shù)傳給函數(shù)內(nèi)部,常用手法。
實(shí)踐結(jié)果
[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 ] #< ==采用獲取狀態(tài)碼,并轉(zhuǎn)為數(shù)字的方式判斷,如果301認(rèn)為正確也可以加上egrep過濾。 then echo "$1 is ok" else echo "$1 is fail" fi } main(){ if [ $# -ne 1 ] then usage fi checkurl $1 } main $*
實(shí)踐結(jié)果
[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
關(guān)于怎么使用Shell腳本程序監(jiān)控網(wǎng)站URL是否正常就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。