我试图设置另一个代码块到bash脚本来检查HTTPS上的公共网站是否启动。 我们可以用CURL来做这个吗? 除了CURL之外,还有什么可以使用的build议。 谢谢
这是一个使用wget而不是curl来完成的方法。 请记住,默认情况下,MacOS不包含wget。
一个成功的Web请求将返回一个200的代码,一个失败将返回一个300,400,404等(参见REST API代码 )
如果Web请求成功,这行将返回1 ,否则返回0
wget -q -O /tmp/foo google.com | grep '200' /tmp/foo | wc -l 1
其中之一:
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
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
一个类似的问题在这里得到了回答:
https://stackoverflow.com/questions/12747929/linux-script-with-curl-to-check-webservice-is-up
Qoute来自Burhan Khalid
curl -sL -w“%{http_code} \ n”“ http://www.google.com/ ”-o / dev / null
-s =无声的cURL输出
-L =遵循redirect
-w =自定义输出格式
-o =将HTML输出redirect到/ 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
用返回码0报告状态码200。
对于其他所有需要在脚本中定义您的响应。
为什么不使用完整的解决scheme进行监控? 我发现monit对于这个很好: http : //mmonit.com/monit/
(这是经过多年使用家庭酿造bash脚本 – 我发现monit更容易运输到不同的盒子,并且比一些凌乱的脚本更强大,不知道他们的付费版本)。