用於檢查公共 HTTPS 網站是否已啟動的 Ba​​sh 腳本

用於檢查公共 HTTPS 網站是否已啟動的 Ba​​sh 腳本

我正在嘗試為 bash 腳本設定另一個程式碼區塊,以檢查 HTTPS 上的公共網站是否已啟動。我們可以使用 CURL 來做到這一點嗎?除了 CURL 之外還有什麼可以使用的建議。謝謝

答案1

這是一種使用 wget 而不是curl 來完成此操作的方法。請記住,MacOS 預設不附帶 wget。

成功的 Web 請求將傳回代碼 200,失敗將傳回 300、400、404 等...(請參閱REST API 程式碼

1如果網路請求成功,該行將傳回 a ,否則將返回0

wget -q  -O /tmp/foo google.com | grep '200' /tmp/foo | wc -l
1

答案2

其中之一:

if curl -s --head  --request GET https://example.com | grep "200 OK" > /dev/null; then 
   echo "mysite.com is UP"
else
   echo "mysite.com is DOWN"
fi

答案3

納吉奧斯的check_http 插件可以執行此操作以及更多操作,包括檢查回應中的特定文字。您可以從獨立於 Nagios 本身的 shell 腳本運行它:

$ check_http --ssl -H www.google.com -r 'Feeling Lucky'
HTTP OK: HTTP/1.1 200 OK - 11900 bytes in 0.086 second response time |time=0.085943s;;;0.000000 size=11900B;;;0

$ echo $?
0

答案4

一個類似的問題在這裡得到了答案:

https://stackoverflow.com/questions/12747929/linux-script-with-curl-to-check-webservice-is-up

引自 Burhan Khalid

捲曲 -sL -w "%{http_code}\n" "http://www.google.com/“ -o /dev/null

-s = 靜默 cURL 的輸出

-L = 遵循重定向

-w = 自訂輸出格式

-o = 將 HTML 輸出重新導向到 /dev/null

例子:

[~]$curl -sL -w "%{http_code}\n" "http://www.google.com/“ -o /dev/null

如果要捕獲輸出,我可能會刪除 \n 。

因此,如果您不想檢查有效證書並明顯使用 https 而不是 http,則只需在選項中新增 -k 即可。

curl -sL -w "%{http_code}\n" "https://www.google.com/" -o /dev/null

報告狀態代碼 200,回傳代碼為 0。

對於其他一切,您需要在腳本中定義您的回應。

相關內容