使用链接源文件的 Curl 并行请求

使用链接源文件的 Curl 并行请求

我有这个脚本来检查 URL 列表并使用 Curl 检查返回代码。

链接文件如下所示:

https://link1/...
https://link2/...
https://link200/...
(...)

剧本:

INDEX=0
DIR="$(grep [WorkingDir file] | cut -d \" -f 2)"
WORKDIR="${DIR}/base"
ARQLINK="navbase.txt"


for URL in $(cat $WORKDIR/$ARQLINK); do

        INDEX=$((INDEX + 1))
        HTTP_CODE=$(curl -m 5 -k -o /dev/null --silent --head --write-out '%{http_code}\n' $URL)

        if [ $HTTP_CODE -eq 200 ]; then
                printf "\n%.3d  => OK! - $URL" $INDEX;
        else
                printf "\n\n%.3d  => FAIL! - $URL\n" $INDEX;
        fi

done

运行每个 URL 需要一点时间,所以我想知道如何加快这些卷曲请求的速度。也许我可以使用一些并行的 Curl 请求,但是在“for”循环中使用“xargs”同时打印消息似乎并不是可行的方法。

我能够在脚本中使用“xargs”并且它可以工作,尽管没有显示正确的 HTTP 代码。

cat navbase.txt | xargs -I % -P 10 curl -m 5 -k -o /dev/null --silent --head --write-out '%{http_code}\n' %

我找不到将其插入脚本的方法。

有小费吗?

答案1

Curl 7.68 有--parallel--parallel-max--parallel-immediate选项。这将是最干净的方法。请参阅发行说明这里和一些男人的选择这里

相关内容