如何检查卷曲是否成功并打印消息?

时间:2016-08-11 20:23:56

标签: bash shell unix curl terminal

我正在尝试使用IF Else条件进行CURL。呼叫成功时打印成功消息或打印呼叫失败。

我的样本卷曲看起来像:

curl 'https://xxxx:1234xxxx@abc.dfghj.com/xl_template.get_web_query?id=1035066' > HTML_Output.html

我想使用Shell做同样的事情。

使用JavaScript:

if(res.status === 200){console.log("Yes!! The request was successful")}
else {console.log("CURL Failed")}

另外,我看到CURL百分比,但我不知道,如何检查CURL的百分比。请帮忙。

CURL输出 CURL output

3 个答案:

答案 0 :(得分:1)

您可以使用curl的-w--write-out)选项打印HTTP代码:

curl -s -w '%{http_code}\n' 'https://xxxx:1234xxxx@abc.dfghj.com/xl_template.get_web_query?id=1035066'

它将显示网站返回的HTTP代码。

同样curl为各种方案提供了大量退出代码,请检查man curl

答案 1 :(得分:1)

与大多数程序一样,curl如果收到错误则返回非零退出状态,因此您可以使用if对其进行测试。

if curl 'https://xxxx:1234xxxx@abc.dfghj.com/xl_template.get_web_query?id=1035066' > HTML_Output
then echo "Request was successful"
else echo "CURL Failed"
fi

如果下载失败,我不知道找出百分比的方法。

答案 2 :(得分:1)

实现这一目标的一种方式,

HTTPS_URL="https://xxxx:1234xxxx@abc.dfghj.com/xl_template.get_web_query?id=1035066"
CURL_CMD="curl -w httpcode=%{http_code}"

# -m, --max-time <seconds> FOR curl operation
CURL_MAX_CONNECTION_TIMEOUT="-m 100"

# perform curl operation
CURL_RETURN_CODE=0
CURL_OUTPUT=`${CURL_CMD} ${CURL_MAX_CONNECTION_TIMEOUT} ${HTTPS_URL} 2> /dev/null` || CURL_RETURN_CODE=$?
if [ ${CURL_RETURN_CODE} -ne 0 ]; then  
    echo "Curl connection failed with return code - ${CURL_RETURN_CODE}"
else
    echo "Curl connection success"
    # Check http code for curl operation/response in  CURL_OUTPUT
    httpCode=$(echo "${CURL_OUTPUT}" | sed -e 's/.*\httpcode=//')
    if [ ${httpCode} -ne 200 ]; then
        echo "Curl operation/command failed due to server return code - ${httpCode}"
    fi
fi