Наткнулся на один пост на одном из сайтов где осуждалось что на системе Windows можно задействовать консольную утилиту (именуется, как speedtest.exe), которая протестирует скорость скачивания(Download)/загрузки(Upload) сети с ближайшим к Вам сервисом Speedtest.

Вот это я бы хотел сам опробовать, глядишь найду применение когда-нибудь, а так будет полезно для общего кругозора. Ранее я использовал на Ubuntu системах speedtest-cli, но она почему-то больше не работала какое-то время. Ради интереса решил проверить — и снова работает, как пример:

ekzorchik@srv-zabbix:~$ speedtest-cli
Retrieving speedtest.net configuration…
Testing from PJSC MegaFon (95.211.37.130)…
Retrieving speedtest.net server list…
Selecting best server based on ping…
Hosted by INETCOM LLC (Moscow) [21.29 km]: 4.36 ms
Testing download speed……………………………………………………………………..
Download: 90.58 Mbit/s
Testing upload speed…………………………………………………………………………………………
Upload: 4.00 Mbit/s
ekzorchik@srv-zabbix:~$

На заметку: Отчет выше из домашней сети NetBynet при тарифном плане для физических лиц 100Мбит/с.

Ну это же хорошо, а тут получается есть и еще один проект с похожим функционалом, значит, чем больше инструментов, тем лучше. В заметке операционная система Windows 10 Pro, что была в данный момент под рукой, хотя все ниже указанное справедливо для всего семейства Windows.

Шаг №1: С официального сайта скачиваю архив под операционную систему Windows, обратил внимание что есть и под Ubuntu систему, что не может радовать, т.к. исходя из этого можно будет взгромоздить ее на мой сервис мониторинга Zabbix.

https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-win64.zip

размер архива 952КБ

распаковываю к примеру, в каталог C:\Soft\st

Шаг №2: Запускаю консоль командной строки и перехожу в каталог куда распаковал архив с консольной утилитой speedtest:

Win + R -> cmd.exe

C:\Users\alektest2>cd /d c:\Soft\st

c:\Soft\st>dir

Том в устройстве C не имеет метки.
Серийный номер тома: 4EB2-5AF0
Содержимое папки c:\Soft\st
01.10.2024  15:07    <DIR>          .
01.10.2024  15:07    <DIR>          ..
01.10.2024  15:06           974 003 ookla-speedtest-1.2.0-win64.zip
28.07.2022  01:29         2 264 064 speedtest.exe
28.07.2022  01:29            13 759 speedtest.md
               3 файлов      3 251 826 байт
               2 папок  21 439 176 704 байт свободно
c:\Soft\st>

Шаг №3: Запускаю консольную утилиту speedtest.exe:

c:\Soft\st>speedtest.exe

==============================================================================
You may only use this Speedtest software and information generated
from it for personal, non-commercial use, through a command line
interface on a personal computer. Your use of this software is subject
to the End User License Agreement, Terms of Use and Privacy Policy at
these URLs:
        https://www.speedtest.net/about/eula
        https://www.speedtest.net/about/terms
        https://www.speedtest.net/about/privacy
==============================================================================
Do you accept the license? [type YES to accept]: Yes (набираю на клавиатуре о соглашении принятия лицензионного соглашения)
License acceptance recorded. Continuing.
   Speedtest by Ookla
      Server: MTS - Moscow (id: 1907)
         ISP: JSC Mastertel
Idle Latency:     1.62 ms   (jitter: 0.16ms, low: 1.57ms, high: 2.12ms)
    Download:   371.87 Mbps (data used: 616.4 MB)
                119.64 ms   (jitter: 59.19ms, low: 1.78ms, high: 1013.11ms)
      Upload:   234.10 Mbps (data used: 109.0 MB)
                540.39 ms   (jitter: 84.18ms, low: 13.35ms, high: 963.19ms)
 Packet Loss:     0.3%
  Result URL: https://www.speedtest.net/result/c/aa54405a-12aa-4f85-ae7f-bd5fbb8d7a04

c:\Soft\st>

На заметку: в работе утилите speedtest.exe не нужны права повышения через UAC, даже под обычным пользователем ее можно запускать.

Итого текущая скорость подключения: 371Mbps/234.10Mbps

Шаг №4: Чтобы вывести список ID ближайших точек:

c:\Soft\st>speedtest.exe -L

Closest servers:
    ID  Name                           Location             Country
==============================================================================
 22121  MosLine Group LLC              Moscow               Russia
  6827  MGTS                           Moscow               Russia
 22050  RETN                           Moscow               Russia
  1907  MTS                            Moscow               Russia
 48192  Aeza.net                       Moscow               Russia
 21110  Polycomm                       Moscow               Russia
  7531  Yota LLC                       Moscow               Russia
 23499  ╨Ь╨░╤А╤М╨╕╨╜╨╛.net             Moscow               Russia
 11266  INETCOM LLC                    Moscow               Russia
 53268  City-Telecom ZAO               Moscow               Russia

c:\Soft\st>

Шаг №5: Выполняем тестирование с указанием конкретного ID точки:

c:\Soft\st>speedtest.exe -s 6827

   Speedtest by Ookla
      Server: MGTS - Moscow (id: 6827)
         ISP: JSC Mastertel
Idle Latency:     2.72 ms   (jitter: 0.36ms, low: 2.46ms, high: 2.98ms)
    Download:   343.87 Mbps (data used: 430.5 MB)
                  3.25 ms   (jitter: 5.76ms, low: 2.40ms, high: 254.48ms)
      Upload:   228.33 Mbps (data used: 209.9 MB)
                289.44 ms   (jitter: 55.12ms, low: 16.18ms, high: 499.97ms)
 Packet Loss:     0.0%
  Result URL: https://www.speedtest.net/result/c/4514019c-97bb-47a9-877e-9d00d6b39cd7
c:\Soft\st>

Шаг №6: Если нужно получать результат работы, к примеру, в формат json:

На заметку: вывод результатов возможен в виде: CSV, JSONL or JSON.

c:\Soft\st>speedtest.exe -s 6827 -f json

{"type":"result","timestamp":"2024-10-01T12:17:31Z","ping":{"jitter":0.233,"latency":2.683,"low":2.417,"high":2.777},"download":{"bandwidth":42298007,"bytes":387800820,"elapsed":9314,"latency":{"iqm":3.173,"low":2.376,"high":254.651,"jitter":5.998}},"upload":{"bandwidth":28672462,"bytes":195659036,"elapsed":6856,"latency":{"iqm":329.562,"low":29.920,"high":517.798,"jitter":63.180}},"packetLoss":0,"isp":"JSC Mastertel","interface":{"internalIp":"127.0.0.1","name":"","macAddr":"00:00:00:00:00:00","isVpn":false,"externalIp":"79.171.173.158"},"server":{"id":6827,"host":"sptest2.mgts-spdop.ru","port":8080,"name":"MGTS","location":"Moscow","country":"Russia","ip":"94.29.127.42"},"result":{"id":"ac16b01c-f80c-4faa-a3ec-4ae91b8bb993","url":"https://www.speedtest.net/result/c/ac16b01c-f80c-4faa-a3ec-4ae91b8bb993","persisted":true}}

Исследуя вопрос как теперь произвести парсинг вывода из Json в чисто значения Download/Upload пришел к строкам на PowerShell:

notepad++ -> создаем скрипт с расширением ps1

$speedtestcmd = & «C:\Soft\st\speedtest.exe» —accept-license -s 6827 -f json

$speedtestresult=ConvertFrom-Json $speedtestcmd

$result=[PSCustomObject]@{

Download = [math]::round($speedtestresult.download.bandwidth/1MB, 5)*8

Upload = [math]::round($speedtestresult.upload.bandwidth/1MB, 5)*8

}

$result

На заметку: в скрипте выше происходит получение значения после 5 тестов и преобразование значений в Мегабит в секунду:

Выполняем скрипт с расширением ps1:

c:\Soft\st>powershell -file st.ps1

Download   Upload

———   ——

331,84624 220,6708

Отлично, даже нечего добавить. Я лично придерживать такого момента что, если что-то можно найти уже описанное кем-то и применять в своих задачах, либо же чуть подправить с учетом своего.

На заметку: Парсить вывод выше дабы передавать в систему мониторинга нет смысла, так как система мониторинга строится на Ubuntu системе и там проще и нужно заморачиваться, тут же просто посмотреть.

На этом пока все, с уважением автор блога Олло Александр aka ekzorchik.

От ekzorchik