Как урезать результат speedtest-cli только для вывода скорости загрузки?

В соответствии с этим результатом теста он должен хорошо работать с Wine on Natty. И вот учебник по установке Steam в Wine. Не пробовал это сам, хотя ...

8
задан 4 October 2017 в 09:12

13 ответов

Поскольку 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

Это дает результат в bps, как число с плавающей запятой Мбит / с округляется до одного десятичного знака в соответствии с запросом

Минимальная версия speedtest-cli для этого - 1.0.0. Думаю, вам может понадобиться pip install speedtest-cli --upgrade для обновления.

11
ответ дан 22 May 2018 в 17:51
  • 1
    Ну, не совсем :) speedtest-cli - приложение для python, однако библиотека, похоже, была переименована из speedtest-cli в speedtest вместе со множеством других изменений в структуре. Я обновлю свой ответ – Pelle 4 October 2017 в 14:21
  • 2
    Мне нравится этот подход, нет лишних тестов ping и upload. Хотя результат возвращается в бит / с и с 5 знаками после запятой. Есть ли способ заставить его отображать в мегабайтах и ​​округлять до одного десятичного знака? – Adam 4 October 2017 в 15:06
  • 3
    Конечно, см. Выше – Pelle 4 October 2017 в 15:08
  • 4
    Красота, спасибо! Как замечательный ответ на десерт, это то, что я в конечном итоге использовал из-за эффективности. Я проверяю его каждые несколько минут, так что обрезка жира на ненужные звонки выгодна мне. – Adam 4 October 2017 в 15:50
  • 5
    @Adam Вы должны изменить свой вопрос и соответственно изменить его - название не соответствует этому ответу в настоящее время. – dessert 4 October 2017 в 15:57

Поскольку 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

Это дает результат в bps, как число с плавающей запятой Мбит / с округляется до одного десятичного знака в соответствии с запросом

Минимальная версия speedtest-cli для этого - 1.0.0. Думаю, вам может понадобиться pip install speedtest-cli --upgrade для обновления.

11
ответ дан 18 July 2018 в 05:47

Поскольку 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

Это дает результат в bps, как число с плавающей запятой Мбит / с округляется до одного десятичного знака в соответствии с запросом

Минимальная версия speedtest-cli для этого - 1.0.0. Думаю, вам может понадобиться pip install speedtest-cli --upgrade для обновления.

11
ответ дан 24 July 2018 в 18:26

Это задание для 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

Пояснения

NR==2 - взять строку 2 s/A/B/ - s ubstitute A с B {print$2} - распечатать второй столбец (по умолчанию разделен пробел) [^ ]* - взять все, что нет (^) пробел {print$2" "$3} - распечатать второй столбец, за которым следует пробел, а третий - \(…\) - взять все внутри и сохранить его как группу \1 - получить содержимое группы 1
10
ответ дан 22 May 2018 в 17:51

И тогда есть:

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

Как первый вариант десерта, но без селектора строк.

2
ответ дан 22 May 2018 в 17:51
  • 1
    Это редко полезно делать grep ... | awk - speedtest-cli --simple | awk '/Download/{print $2}' – muru 4 October 2017 в 14:11
  • 2
    @dessert не совсем - вы отфильтровывались по определенному номеру строки, а не по строке, что и делает этот ответ – muru 4 October 2017 в 14:14
  • 3
    @muru Вы правы, я прошу прощения. – dessert 4 October 2017 в 15:05

Это также будет работать:

speedtest-cli --simple | grep -E "Download:\s*" | sed -r 's/Download:\s*//'
1
ответ дан 22 May 2018 в 17:51
  • 1
    Как это отличается от ответа AmeyaVS? – Ruslan 4 October 2017 в 13:52
  • 2
    @Ruslan Я был тем, кто ошибочно отредактировал ответ AmeyaVS, думая, что я редактирую мою. Вот почему он выглядит одинаково – George Udosen 4 October 2017 в 13:54
  • 3
    О, тогда вы должны откатить свое редактирование своего ответа, я полагаю ... – Ruslan 4 October 2017 в 13:55
  • 4
    Это история изменений. Ваше последнее изменение является неполным WRT оригиналом. – Ruslan 4 October 2017 в 14:03
  • 5
    Никогда не использовал эту функцию, откатив – George Udosen 4 October 2017 в 14:05

Вы можете попробовать следующее:

speedtest-cli --simple | grep "Download: " | sed "s/Download: //g"
1
ответ дан 22 May 2018 в 17:51
  • 1
    Вместо grep в сочетании с sed вы можете просто использовать sed -n и добавить p в конце выражения, например speedtest-cli --simple | sed -nr 's/Download:\s*//p'. – Ruslan 4 October 2017 в 13:51

Это задание для 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

Пояснения

NR==2 - взять строку 2 s/A/B/ - s ubstitute A с B {print$2} - распечатать второй столбец (по умолчанию разделен пробел) [^ ]* - взять все, что нет (^) пробел {print$2" "$3} - распечатать второй столбец, за которым следует пробел, а третий - \(…\) - взять все внутри и сохранить его как группу \1 - получить содержимое группы 1
10
ответ дан 18 July 2018 в 05:47

Вы можете попробовать следующее:

speedtest-cli --simple | grep "Download: " | sed "s/Download: //g"
1
ответ дан 18 July 2018 в 05:47

И тогда есть:

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

Как первый вариант десерта, но без селектора строк.

2
ответ дан 18 July 2018 в 05:47

Это задание для 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

Пояснения

NR==2 - взять строку 2 s/A/B/ - s ubstitute A с B {print$2} - распечатать второй столбец (по умолчанию разделен пробел) [^ ]* - взять все, что нет (^) пробел {print$2" "$3} - распечатать второй столбец, за которым следует пробел, а третий - \(…\) - взять все внутри и сохранить его как группу \1 - получить содержимое группы 1
10
ответ дан 24 July 2018 в 18:26

Вы можете попробовать следующее:

speedtest-cli --simple | grep "Download: " | sed "s/Download: //g"
1
ответ дан 24 July 2018 в 18:26
  • 1
    Вместо grep в сочетании с sed вы можете просто использовать sed -n и добавить p в конце выражения, например speedtest-cli --simple | sed -nr 's/Download:\s*//p'. – Ruslan 4 October 2017 в 13:51
  • 2
    Как это отличается от ответа AmeyaVS? – Ruslan 4 October 2017 в 13:52
  • 3
    @Ruslan Я был тем, кто ошибочно отредактировал ответ AmeyaVS, думая, что я редактирую мою. Вот почему он выглядит одинаково – George Udosen 4 October 2017 в 13:54
  • 4
    О, тогда вы должны откатить свое редактирование своего ответа, я полагаю ... – Ruslan 4 October 2017 в 13:55
  • 5
    Это история изменений. Ваше последнее изменение является неполным WRT оригиналом. – Ruslan 4 October 2017 в 14:03
  • 6
    Никогда не использовал эту функцию, откатив – George Udosen 4 October 2017 в 14:05

И тогда есть:

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

Как первый вариант десерта, но без селектора строк.

2
ответ дан 24 July 2018 в 18:26
  • 1
    Это редко полезно делать grep ... | awk - speedtest-cli --simple | awk '/Download/{print $2}' – muru 4 October 2017 в 14:11
  • 2
    @dessert не совсем - вы отфильтровывались по определенному номеру строки, а не по строке, что и делает этот ответ – muru 4 October 2017 в 14:14
  • 3
    @muru Вы правы, я прошу прощения. – dessert 4 October 2017 в 15:05

Другие вопросы по тегам:

Похожие вопросы: