shell指令碼測試url是否通

2021-10-01 17:31:24 字數 1971 閱讀 6449

最近在寫雙機部署的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引數判...