Linux CURL命令获取下载速度

Linux CURL命令获取下载速度

我的 Linux shell 脚本中有一段代码片段,我试图在其中获取互联网上示例文件的平均下载速度。

如果我使用以下代码:

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

curl 有一个-w,--write-out选项,应该能够为您提供平均下载速度。请参阅man curl参考资料 详细信息(它说:speed_downloadcurl 测量的完整下载的平均下载速度。每秒字节数。)

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(以字节/秒为单位的平均下载速度)存储在名为 的 shell 变量中avg_speed。例如,结果可能是179199.您可以使用numfmt --to=iec <<<"$avg_speed"打印175K.

由于标准输出用于 的结果%{speed_download},因此使用 将传输内容发送到其他地方(本例中为空设备)-o

相关内容