如何修剪speedtest-cli的结果以仅输出下载速度?


8

我想定期在indicator-sysmonitor中显示我的speedtest下载速度结果。

如果运行,speedtest-cli的输出将有所调整

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

有什么方法可以进一步缩小输出,直到仅降低下载速度数字?


您可以使用 --no-upload选项也不显示上传。
αғsнιη

Answers:


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

这将以bps为单位给出结果,因为浮点数 Mbps按要求四舍五入到小数点后一位

我认为speedtest-cli的最低版本为1.0.0,我认为,您可能需要使用该版本pip install speedtest-cli --upgrade进行升级。


美女,谢谢!就像@dessert的答案一样,由于效率,我最终使用了它。我每隔几分钟会进行一次轮询,因此减少不必要的呼叫上的负担对我很有帮助。
亚当(Adam)

@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} –打印第二列(默认情况下以空格分隔)
  • {print$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 -E "Download:\s*" | sed -r 's/Download:\s*//'

1

您可以尝试以下方法:

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

2
您可以简单地在表达式的末尾使用和追加,而不是与grep结合sed使用,例如。sed -npspeedtest-cli --simple | sed -nr 's/Download:\s*//p'
Ruslan

1

然后是:

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

与甜点的第一选择一样,但没有行选择器。


1
这是做很少有用grep ... | awk-speedtest-cli --simple | awk '/Download/{print $2}'
穆鲁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.