リンクされたソースファイルで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オプションがあります。これが最もクリーンな方法になります。リリースノートを見るここそして何人かの男性の選択ここ

おすすめ記事