연결된 소스 파일과 함께 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옵션이 있습니다. 이것이 가장 깨끗한 방법이 될 것입니다. 릴리스 노트 보기여기그리고 어떤 남자들의 선택여기.

관련 정보