Для онлайн тестирования скорости интернета существуют большое количество онлайн-сервисов. Если вам нужно периодически собирать метрики скорости Интернет-подключения от провайдера для системы мониторинга, можно воспользоваться широко известной консольный клиент Speedtest от Ookla. В этой статье, мы рассмотрим, как измерить скорость Интернет-подключения из командной строки Windows (скрипта PowerShell).
Скачайте консольную утилиту speedtest.exe для Windows с сайта https://www.speedtest.net/apps/cli и распакуйте в локальный каталог.
Чтобы автоматически протестировать скорость скачивания/загрузки сети до ближайшей к вам локации с сервисом Speedtest, выполните команду:
.\speedtest.exe
Утилита вернет скорость скачивания, загрузки (в Мбит/с), сетевые задержки с вашего компьютера до ближайшего сервера Speedtest. Если сервер расположен близко к вам (а их действительно очень много), условно это и будет вашей скоростью Интернета.
Можно вручную выбрать провайдера, страну и город с сервером Speedtest, до которого нужно тестировать подключение. Выведите список ближайших точек и скопируйте ID:
.\speedtest.exe -L
Выполнить тестирование до выбранного сервера:
.\speedtest.exe -s 37149
Утилита speedtest позволяет возвращать результаты в структурированных форматах (CSV, JSON, TSV), что удобно, когда вам нужно дополнительно извлечь данные из результатов или отправить результату проверки в систему мониторинга.
Например, чтобы получить результаты тестирования скорости Интернета из скрипта PowerShell:
$speedtestcmd = & "C:\ps\Speedtest\speedtest.exe" --accept-license -s 37149 -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
Вы можете передать результаты тестировании скорости интернета в виде метрик в вашу систему мониторинга (как получить данные в Zabbix из PowerShell скрипта).
speedtestcmd = & "C:\ps\Speedtest\speedtest.exe" --accept-license -s 37149 -f json $speedtestresult=ConvertFrom-Json $speedtestcmd
PS матерится на все ключи
PS C:\Users\kornev> host
Name : ConsoleHost
Version : 7.4.2
Убирал по одному — не помогает
PS C:\Users\kornev> speedtestcmd = & "C:\ps\Speedtest\speedtest.exe" --accept-license -s 6827 -f json $speedtestresult=ConvertFrom-Json $speedtestcmd
ParserError:
Line |
1 | … dtestcmd = & "C:\ps\Speedtest\speedtest.exe" --accept-license -s 6827 …
| ~~~~~~~~~~~~~~
| Unexpected token 'accept-license' in expression or statement.
PS C:\Users\kornev> speedtestcmd = & "C:\ps\Speedtest\speedtest.exe" -s 6827 -f json $speedtestresult=ConvertFrom-Json $speedtestcmd
ParserError:
Line |
1 | speedtestcmd = & "C:\ps\Speedtest\speedtest.exe" -s 6827 -f json $spe …
| ~~
| Unexpected token '-s' in expression or statement.
PS C:\Users\kornev> speedtestcmd = & "C:\ps\Speedtest\speedtest.exe" -f json $speedtestresult=ConvertFrom-Json $speedtestcmd
ParserError:
Line |
1 | speedtestcmd = & "C:\ps\Speedtest\speedtest.exe" -f json $speedtestre …
| ~
| You must provide a value expression following the '-f' operator.
Сорян, форматирование кода уползло. Поправил. Пробуй опять 🙂
И опять мимо
PS C:\> host
Name : ConsoleHost
Version : 7.4.2
InstanceId : ba53ce35-4ea0-4b50-9e4d-3be18c986b94
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : en-US
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
PS C:\> $speedtestcmd = & "C:\ps\Speedtest\speedtest.exe" --accept-license -s 37149 -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
&: The term 'C:\ps\Speedtest\speedtest.exe' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
ConvertFrom-Json:
Line |
2 | $speedtestresult=ConvertFrom-Json $speedtestcmd
| ~~~~~~~~~~~~~
| Cannot bind argument to parameter 'InputObject' because it is null.
Download Upload
-------- ------
0.00 0.00
PS C:\>
Файл «C:\ps\Speedtest\speedtest.exe» на месте?
Уп-с …. Работает все!
C:\ps
сделал, а дальше поленился закопать или код поправитьСпасибо за «тычок носом в лужу» 😀
Спасибо большое за скрипт
Спасибо, рабочая тема.