ダウンロード速度を取得する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で測定したフルダウンロードの平均ダウンロード速度、1秒あたりのバイト数と表示されています。)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

おすすめ記事