用于检查公共 HTTPS 站点是否启动的 Bash 脚本

用于检查公共 HTTPS 站点是否启动的 Bash 脚本

我正在尝试将另一个代码块设置为 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。

对于其他所有事情,您都需要在脚本中定义您的响应。

相关内容