我正在嘗試為 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。
對於其他一切,您需要在腳本中定義您的回應。