Bash

從 Linux CURL 命令獲取下載速度

  • August 3, 2021

我有一個來自我的 Linux shell 腳本的程式碼片段,我試圖在其中獲取 Internet 上範例文件的平均下載速度。

如果我使用以下程式碼:

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)

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儲存在名為avg_speed. 例如,結果可能是179199. 你可以numfmt --to=iec <<<"$avg_speed"用來列印175K

由於標準輸出用於 的結果%{speed_download},因此將傳輸的內容髮送到其他地方(在本例中為空設備)-o

引用自:https://unix.stackexchange.com/questions/663081