![用于检查公共 HTTPS 站点是否启动的 Bash 脚本](https://linux22.com/image/623195/%E7%94%A8%E4%BA%8E%E6%A3%80%E6%9F%A5%E5%85%AC%E5%85%B1%20HTTPS%20%E7%AB%99%E7%82%B9%E6%98%AF%E5%90%A6%E5%90%AF%E5%8A%A8%E7%9A%84%20Bash%20%E8%84%9A%E6%9C%AC.png)
我正在尝试将另一个代码块设置为 bash 脚本,以检查 HTTPS 上的公共网站是否正常运行。我们可以使用 CURL 来执行此操作吗?除了 CURL 之外,还有什么建议吗?谢谢
答案1
以下是使用 wget 而不是 curl 的方法。请记住,MacOS 默认不附带 wget。
成功的 Web 请求将返回代码 200,失败将返回 300、400、404 等...(参见REST API 代码)
1
如果网络请求成功,此行将返回,否则将返回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
Nagios 的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
curl -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。
因此,如果您不想检查有效证书,则只需在选项中添加 -k,并显然使用 https 而不是 http。
curl -sL -w "%{http_code}\n" "https://www.google.com/" -o /dev/null
报告状态代码 200,返回代码为 0。
对于其他所有事情,您都需要在脚本中定义您的响应。