speedtestのダウンロード速度の結果をindicator-sysmonitorに定期的に表示したいのですが。
実行した場合、speedtest-cliの出力は多少調整されます
$ speedtest-cli --simple
Ping: 50.808 ms
Download: 10.87 Mbit/s
Upload: 4.47 Mbit/s
ダウンロード速度の数値まで、出力をさらにトリミングする方法はありますか?
speedtestのダウンロード速度の結果をindicator-sysmonitorに定期的に表示したいのですが。
実行した場合、speedtest-cliの出力は多少調整されます
$ speedtest-cli --simple
Ping: 50.808 ms
Download: 10.87 Mbit/s
Upload: 4.47 Mbit/s
ダウンロード速度の数値まで、出力をさらにトリミングする方法はありますか?
回答:
speedtest-cli
Pythonプログラムおよびライブラリと同様に、ダウンロードテストのみを実行して出力を出力する最小限の代替プログラムを作成するのはかなり簡単です。
エディターを開き、名前を付けて保存 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
。アップグレードに使用する必要があるかもしれません。
それはの仕事です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/
- s
ubstitute A
とB
.*
–すべてを取る[^ ]*
– ^
スペースではないすべてのもの()を取る␣
(スペース文字)–文字通りのスペース\(…\)
-すべてを中に入れて、グループとして保存します\1
–グループ1のコンテンツを取得するあなたはこれを試すことができます:
speedtest-cli --simple | grep "Download: " | sed "s/Download: //g"
grep
組み合わせる代わりにsed
、のように単純に使用して、式の最後にsed -n
追加できます。p
speedtest-cli --simple | sed -nr 's/Download:\s*//p'
そして、あります:
speedtest-cli --simple | grep Download | awk '{print $2}'
デザートの最初のオプションと同じですが、ラインセレクタはありません。
grep ... | awk
-speedtest-cli --simple | awk '/Download/{print $2}'
--no-upload
オプションを使用して、アップロードも表示しないようにすることができ ます。