【问题标题】:cURL: manage download errorscURL:管理下载错误
【发布时间】:2019-12-14 15:26:09
【问题描述】:

我尝试编写一个 Bash 脚本来通过解析响应标头来管理 cURL 下载错误。然而,对于所有 Github 下载,重定向后的标头为 HTTP/1.1 403 Forbidden,尽管下载工作正常。

function curldown {

    url="$1"
    code=$(curl -LI $url | awk '/^HTTP/{a=$2} END{print a}')

    if [[ "${code:0:1}"  == "4" ]]; then
    echo "Error $code"
    else
    curl -JOL $url > /tmp/curldown
    fi

}

url='https://github.com/keybase/client/releases/download/v5.1.1/keybase-v5.1.1.tar.xz'
curldown $url
# Error 403

但是

curl -JOL $url

给出一个工作输出。

有什么办法吗?

【问题讨论】:

    标签: bash curl http-headers


    【解决方案1】:

    更好的解决方案:

    http_code=$(curl -Ls "$url" -w '%{http_code}\n' -o /dev/null)
    
    if ((http_code >= 400)); then
        echo >&2 "Error detected; HTTP code $http_code"
    fi
    

    【讨论】:

    • 我有一个奇怪的行为。使用提供的重定向到亚马逊的 Github URL,如果使用 curl -LI,我会得到 302 和 403 响应代码,但 curl -JOL $url 有效。您的代码提供了 200 个代码,但处理页面需要很长时间。通过删除-o /dev/null,它的响应是立即的,但如果数据不是二进制的,我会打印页面内容。
    猜你喜欢
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    相关资源
    最近更新 更多