speedtest-cliの結果をトリミングして、ダウンロード速度のみを出力する方法は?


8

speedtestのダウンロード速度の結果をindicator-sysmonitorに定期的に表示したいのですが

実行した場合、speedtest-cliの出力は多少調整されます

$ speedtest-cli --simple
Ping: 50.808 ms
Download: 10.87 Mbit/s
Upload: 4.47 Mbit/s 

ダウンロード速度の数値まで、出力をさらにトリミングする方法はありますか?


--no-uploadオプションを使用して、アップロードも表示しないようにすることができ ます。
αғsнιη

回答:


11

speedtest-cliPythonプログラムおよびライブラリと同様に、ダウンロードテストのみを実行して出力を出力する最小限の代替プログラムを作成するのはかなり簡単です。

エディターを開き、名前を付けて保存 dl-speedtest.py

import speedtest

s = speedtest.Speedtest()
s.get_config()
s.get_best_server()
speed_bps = s.download()
speed_mbps = round(speed_bps / 1000 / 1000, 1)
print(speed_mbps)

と一緒に走る python dl-speedtest.py

これは、要求に応じて小数点以下1桁に丸められた浮動小数点数 Mbps として、結果をbpsで示します

これが機能するためのspeedtest-cliの最小バージョンは1.0.0ですpip install speedtest-cli --upgrade。アップグレードに使用する必要があるかもしれません。


美しさ、ありがとう!@dessertの答えと同じくらい素晴らしいですが、これは私が効率のために最終的に使用したものです。私はそれを数分ごとにポーリングしているので、不要な呼び出しの脂肪をトリミングすることは私にとって有益です。
アダム

@Adam 質問を編集して、それに応じて変更する必要があります。現在、タイトルがこの回答と一致していません。
デザート

12

それはの仕事ですawk

speedtest-cli --simple | awk 'NR==2{print$2}'      # just the numeral
speedtest-cli --simple | awk 'NR==2{print$2" "$3}' # numeral and unit

解説

  • NR==2 –ラインを取る 2
  • {print$2} – 2列目を出力します(デフォルトではスペースで区切られています)
  • {print$2" "$3} – 2番目の列に続いてスペースと3番目の列を印刷する

sedそれはもう少し複雑です。

speedtest-cli --simple | sed '/D/!d;s/.* \(.*\) .*/\1/' # just the numeral
speedtest-cli --simple | sed '/D/!d;s/[^ ]* \(.*\)/\1/' # numeral and unit

解説

  • /D/!d– 削除しDない(!)行を含む行を検索しますdが、他のすべての行を検索します
  • s/A/B/- substitute AB
  • .* –すべてを取る
  • [^ ]*^スペースではないすべてのもの()を取る
  • (スペース文字)–文字通りのスペース
  • \(…\) -すべてを中に入れて、グループとして保存します
  • \1 –グループ1のコンテンツを取得する


1

あなたはこれを試すことができます:

speedtest-cli --simple | grep "Download: " | sed "s/Download: //g"

2
grep組み合わせる代わりにsed、のように単純に使用して、式の最後にsed -n追加できます。pspeedtest-cli --simple | sed -nr 's/Download:\s*//p'
Ruslan 2017年

1

そして、あります:

speedtest-cli --simple | grep Download | awk '{print $2}'

デザートの最初のオプションと同じですが、ラインセレクタはありません。


1
これを行うのはめったに便利ですgrep ... | awk-speedtest-cli --simple | awk '/Download/{print $2}'
muru
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.