我启动了一个docker HTTP服务
我想等待HTTP服务启动并使用 curl
运行我写了以下bash脚本
$ANDROID_HOME
然后我测试我的服务:
#!/bin/bash
found_message_in_a_bottle() {
curl -H "Accept: application/json" --connect-timeout 2 -s "$1" 2>/dev/null| grep -q Welcome
}
wait_for_saltmaster() {
while ! found_message_in_a_bottle "$1"; do
echo wait for service...
sleep 1
done
}
我期待等待服务,直到我有200个代码和HTTP响应。
对于某些服务,我有HTTP服务200代码,但curl请求会继续重试。
我的cURL命令有什么问题吗?
答案 0 :(得分:2)
如果要检查HTTP 200响应代码,则应尝试查找响应头是否具有HTTP 200响应代码。
通常,响应标头包含这些信息。
HTTP/1.1 200 OK
Date: Mon, 11 Dec 2017 23:59:11 GMT
Server: Apache/2.2.32 (Unix) mod_wsgi/3.5 Python/2.7.13 PHP/7.1.8 mod_ssl/2.2.32 OpenSSL/1.0.2j DAV/2 mod_fastcgi/2.4.6 mod_perl/2.0.9 Perl/v5.24.0
X-Powered-By: PHP/7.1.8
Content-Length: 0
Content-Type: text/html; charset=UTF-8
您可以通过此curl命令检查响应标头,提取第一行并查看它是否为200 OK。
curl -H "Accept: application/json" --connect-timeout 2 -s -D - "$1" -o /dev/null 2>/dev/null | head -n1 | grep 200