Наткнулся на один пост на одном из сайтов где осуждалось что на системе 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.