다운로드 속도를 얻는 Linux CURL 명령

다운로드 속도를 얻는 Linux CURL 명령

내 Linux 셸 스크립트에 인터넷에서 샘플 파일의 평균 다운로드 속도를 얻으려는 코드 조각이 있습니다.

다음 코드를 사용하는 경우:

targetURL=https://file-examples-com.github.io/uploads/2017/10/file_example_JPG_1MB.jpg 2>/dev/null

curl -L $targetURL | head -n 1| cut -d $' ' -f2

"Dload" 아래에 값이 필요합니다(예제 출력에서는 175입니다. 얻은 값을 변수에 저장하겠습니다.

내 결과는 다음과 같습니다

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0cut: stdin: Illegal byte sequence
  3 1018k    3 33834    0     0   175k      0  0:00:05 --:--:--  0:00:05  175k
curl: (23) Failed writing body (0 != 1362)

답변1

컬에는 평균 다운로드 속도를 제공하는 -w옵션이 있습니다. 자세한 내용은 참조를 --write-out참조하세요 . ( curl로 측정한 전체 다운로드의 평균 다운로드 속도, 초당 바이트 수라고 표시되어 있습니다.)man curlspeed_download

url='https://file-examples-com.github.io/uploads/2017/10/file_example_JPG_1MB.jpg'

if avg_speed=$(curl -qfsS -w '%{speed_download}' -o /dev/null --url "$url")
then
  echo "$avg_speed"
fi

표준 출력 curl(바이트/초 단위의 평균 다운로드 속도)은 이라는 쉘 변수에 저장됩니다 avg_speed. 예를 들어, 결과는 을 사용 하여 인쇄 179199할 수 있습니다.numfmt --to=iec <<<"$avg_speed"175K

표준 출력이 결과에 사용되므로 %{speed_download}use는 전송을 다른 곳(이 경우 null 장치)으로 보냅니다 -o.

관련 정보