今日練習(xí)題
【需求】
寫(xiě)一個(gè)監(jiān)控腳本,監(jiān)控某站點(diǎn)訪問(wèn)是否正常。
提示:
1)可以將訪問(wèn)的站點(diǎn)以參數(shù)的形式提供,例如
sh xxx.sh www.aminglinux.com2)狀態(tài)碼為2xx或者3xx表示正常
3)正常時(shí)echo正常,不正常時(shí)echo不正常
【分析】
1)腳本是帶有參數(shù)的,第一個(gè)參數(shù)就是要訪問(wèn)的站點(diǎn)URL,傳遞的第一個(gè)參數(shù),在腳本里用$1表示;
2)獲取站點(diǎn)狀態(tài)碼,使用curl工具。其中curl的-I參數(shù)只獲取header信息,里面就包含狀態(tài)碼。例如:
curl -I 'www.aminglinux.com' HTTP/1.1 301 Moved Permanently Server: nginx Date: Fri, 02 Dec 2022 0337 GMT Content-Type: text/html Content-Length: 162 Connection: keep-alive Location:http://www.apelearn.com/從結(jié)果中可以看到,我們想要的狀態(tài)碼就在第一行。所以,可以將curl的執(zhí)行結(jié)果通過(guò)管道符進(jìn)一步處理。但在這兒有個(gè)問(wèn)題,curl的結(jié)果一旦加上管道符后,那么就會(huì)多出來(lái)一個(gè)如下內(nèi)容的輸出
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0162000000--:--:----:--:----:--:--0這個(gè)內(nèi)容屬于錯(cuò)誤輸出內(nèi)容,需要做一下處理,加一個(gè) 2>/dev/null即可。
另外curl訪問(wèn)一個(gè)有問(wèn)題的URL時(shí),時(shí)間比較久,所以有必要給它加一個(gè)超時(shí)時(shí)間,比如設(shè)置為3秒,這樣能保證即使這個(gè)URL有問(wèn)題也能在3秒內(nèi)執(zhí)行完成。
code=`curl --connect-timeout 3 -I $1 2>/dev/null |grep 'HTTP'|awk '{print $2}'`
最終拿到狀態(tài)碼,需要做對(duì)比,看是否是2xx或者3xx。我的方法是使用grep做正則匹配:
echo $code |grep -qE '^2[0-9][0-9]|^3[0-9][0-9]'
【參考答案】
#!/bin/bash if ! which curl &>/dev/null then echo "本機(jī)沒(méi)有安裝curl" yum install -y curl if ! which curl &>/dev/null then echo "沒(méi)有安裝成功curl" exit 1 fi fi code=`curl --connect-timeout 3 -I $1 2>/dev/null |grep 'HTTP'|awk '{print $2}'` if echo $code |grep -qE '^2[0-9][0-9]|^3[0-9][0-9]' then echo "$1訪問(wèn)正常" else echo "$1訪問(wèn)不正常" fi
審核編輯:湯梓紅
-
監(jiān)控
+關(guān)注
關(guān)注
6文章
2236瀏覽量
55384 -
腳本
+關(guān)注
關(guān)注
1文章
392瀏覽量
14947
原文標(biāo)題:監(jiān)控你的站點(diǎn)訪問(wèn)是否正常
文章出處:【微信號(hào):aming_linux,微信公眾號(hào):阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
支持全球探測(cè)點(diǎn)的新一代網(wǎng)站監(jiān)控
用于多站點(diǎn)并行測(cè)試的ACS集成測(cè)試系統(tǒng),看完你就懂了
無(wú)法訪問(wèn)該站點(diǎn)以下載打開(kāi)的stm32系統(tǒng)工作臺(tái)如何解決
使用tmpfs組件保存在RAM中的數(shù)據(jù)在設(shè)備軟復(fù)位后是否仍能正常訪問(wèn)?
source.codeaurora.org無(wú)法訪問(wèn)此站點(diǎn)是為什么?
本地站點(diǎn)網(wǎng)格作業(yè)監(jiān)控模塊的設(shè)計(jì)和實(shí)現(xiàn)
迅馳本本發(fā)熱巨大是否正常
微軟Chromium Edge用戶可快速訪問(wèn)站點(diǎn)
基于組態(tài)軟件的分布式站點(diǎn)數(shù)據(jù)監(jiān)控方案
智慧農(nóng)村污水站點(diǎn)監(jiān)控方案設(shè)計(jì)
基于RFID的訪問(wèn)控制和監(jiān)控系統(tǒng)
![基于RFID的<b class='flag-5'>訪問(wèn)</b>控制和<b class='flag-5'>監(jiān)控</b>系統(tǒng)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論