最近在寫雙機部署的shell指令碼,
需要通過測試指定的url來確定專案(springboot)是否啟動成功,
思路:
通過curl命令來訪問指定的url
curl引數說明:
-i --head 僅返回頭部資訊,使用head請求
-m 10 最多查詢10s
-o /dev/null 遮蔽原有輸出資訊
-s silent 模式,減少輸出的資訊,比如進度
-w 控制額外輸出,"%"表示輸出http狀態碼
由於系統啟動需要一定的時間,因此需要while迴圈不斷測試直到訪問成功或者超時為止。
check-url.sh指令碼如下
#!/bin/bash
#檢測的url,從第乙個引數中獲取
url=
$1#認為檢測成功的http狀態碼,從第二個引數中獲取
success_code=
$2#最大秒數(即超時時間)
max_seconds=180
#當前秒數
cnt_seconds=0
#休息間隔秒數
sleep_seconds=5
#結果標記
result_flag=0if[
!$url];
then
echo
"第1個引數url不能為空!!!"
echo
exit -1
else
echo
"待檢測的url="
$url
echo
fiif[!
$success_code];
then
echo
"第2個引數成功狀態碼不能為空!!!"
echo
exit -1
else
echo
"檢測成功的狀態碼success_code="
$echo
fi# 通過while迴圈不斷檢測:-lt 小於,-a 邏輯與(and)
while
[$ -lt $ -a $ -eq 0 ]
doecho
"check $ ..."
# 執行curl返回http狀態碼
# -ne表示不等於if[
$ -ne $
]then
result_flag=0
echo
$ 訪問失敗, $秒後進行下一次嘗試, cnt_seconds=
$sleep
$ cnt_seconds=$[
$+$]
;else
result_flag=1
echo
$ 訪問成功, cnt_seconds=$fi
echo
echo
doneif[
$ -eq 0 ]
then
echo
$ 訪問檢測失敗: $秒之內未訪問成功!!!
echo
echo
exit -1
fiecho
$ 訪問檢測成功
echo
echo
使用方式
兩個引數:
引數1,待測試的url
引數2,認為成功的http狀態碼
./check-url.sh localhost:8080/test 200
監控url是否正常指令碼
1.用wget命令監控 spider q,quiet 安靜的訪問,禁止輸出,類似 o dev null功能 o,output file file 記錄輸出到檔案 t,timeout seconds 訪問 的超時時間 t,tries number 當 異常時重試 的次數 bin sh function...
shell 生成測試指令碼
expr 命令 用途求表示式變數的值。語法expr expression 描述expr 命令讀入 expression 引數,計算它的值,然後將結果寫入到標準輸出。您必須對 expression 引數應用以下規則 用空格隔開每個項。用 反斜槓 放在 shell 特定的字元前面。對包含空格和其他特殊字...
Shell指令碼判斷檔案是否存在
例項一 bin sh 判斷檔案是否存在 這裡的 x 引數判斷 mypath是否存在並且是否具有可執行許可權 if x mypath then mkdir mypath fi 這裡的 d 引數判斷 mypath是否存在 if d mypath then mkdir mypath fi 這裡的 f引數判...