我正在尝试使用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的百分比。请帮忙。
答案 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