Войти

Показать полную графическую версию : [решено] Определить скорость подключения к интернету


mtsg
29-12-2019, 10:58
Подскажите пожалуйста, как определить скорость подключения к интернету и в зависимости от значения выполнить команды.
Организовать проверку значения скорости в цикле.
Заранее благодарен.

Уже пробовал следующее:
- AdapterWatch от nirsoft (https://www.nirsoft.net/utils/awatch.html) - через консоль почему-то не экспортирует значение Calculated Speed Of Received Data в файл, с которым можно было бы работать дальше, хотя в gui показывает исправно.
- Используя netstat (http://www.cyberforum.ru/post3974479.html), похоже требуется адаптация, при запуске пишет "используемая скорость - 0 Байт/сек"
- Консольную утилиту ookla-speedtest (https://dl.bintray.com/ookla/download/ookla-speedtest-1.0.0-win64.zip), потребляет достаточно много трафика, и не совсем понятно как считать данные.
https://s19.directupload.net/images/200103/h6v8wuqe.png


CMD/BAT
Как проверить скорость загрузки в приложении utorrent и в зависимости от значения выполнить команду

https://s19.directupload.net/images/191229/fsss8wam.png

https://s19.directupload.net/images/191229/9y8b343b.png

Iska
29-12-2019, 11:25
mtsg, расшифруйте Ваше понимание словосочетания «скорость интернет-соединения для приложения».

mtsg
29-12-2019, 11:29
Iska, имеется ввиду скорость загрузки для utorrent

DJ Mogarych
30-12-2019, 09:40
if SPEED>10 goto ok
if SPEED<10 goto reconnect »
Больше и меньше 10 чего?

mtsg
30-12-2019, 11:34
DJ Mogarych, мегабит

mtsg
03-01-2020, 05:16
Обновил задачу в первом сообщении

yurfed
03-01-2020, 05:56
Обновил задачу в первом сообщении »Вы чем там меряетесь, пипками, пипетками, титьками или пингвинками?
if SPEED>10 goto ok
if SPEED<10 goto reconnect »
Конкретика ещё та.
Если больше 10 слов в минуту, всё хокей, меньше -бежим обратно.
Обновил задачу в первом сообщении »
Полный набор букв покажите, что вы там налепили

mtsg
03-01-2020, 06:26
Полный набор букв покажите, что вы там налепили »
Все что есть написал в первом сообщении, ничего другого к сожалению нет :)
Задача в том как определить текущее значение скорости.

Iska
03-01-2020, 10:24
mtsg, в общем и целом, если нет какой-то возможности взаимодействовать с μTorrent (я лично о таковой не знаю), задача не решаема.

mtsg
03-01-2020, 10:34
Iska, а как можно определить текущую скорость подключения к интернету?

DJ Mogarych
03-01-2020, 15:05
В принципе, можно вот такой колхоз сделать, но надо уточнять кол-во интерфейсов, которые обмениваются трафиком, либо вообще делать фильтр по имени интерфейса. Это будет нормально работать при одном активном интерфейсе.

Powershell:

$Mbps = ((gwmi Win32_PerfFormattedData_Tcpip_NetworkInterface |
select BytesTotalPersec,CurrentBandwidth,PacketsPersec |? PacketsPersec -gt 0).BytesTotalPersec) * 8 / 1024 / 1024

if ($Mbps -lt 10) {
kill -name utorrent
start "$env:appdata\uTorrent\utorrent.exe"
}


И опять же, это измерение общего трафика, т.е., не только торрента. Иными словами, если что-то другое будет потреблять трафик больше 10 мегабит в секунду, то затея не сработает.

greg zakharov
03-01-2020, 23:12
Измерение скорости интернет соединения - очень относительная единица, если учесть все нюансы устройства сети. А раз так можно и curl'ом обойтись. Например:
curl -H "Range: bytes=0-31457280" http://mirror.yandex.ru/openbsd/6.6/i386/install66.iso -o nul -sw "%{speed_download}"

iglezz
04-01-2020, 00:41
Если нужно определить текущую скорость загрузки uTorrent, то:
1. это следует отобразить в первом сообщении
2. скорость можно достать из заголовка uTorrent на том-же Powershell (в нём ни бум-бум, примеры есть в сети) или AutoIt. (WSH вроде бы в пролёте)

mtsg
04-01-2020, 10:31
В принципе, можно вот такой колхоз сделать, но надо уточнять кол-во интерфейсов, которые обмениваются трафиком, либо вообще делать фильтр по имени интерфейса. Это будет нормально работать при одном активном интерфейсе. »
Спасибо! Вроде работает, задействованный интерфейс только один(wifi), в итоге получилось следующее(возможно не очень грамотно):


[int]$i = 1
while ($i -eq 1) {

$Mbps = ((gwmi Win32_PerfFormattedData_Tcpip_NetworkInterface |
select BytesTotalPersec,CurrentBandwidth,PacketsPersec |? PacketsPersec -gt 0).BytesTotalPersec) * 8 / 1024 / 1024
Write-Host Скорость загрузки $Mbps Mb/s

if ($Mbps -lt 2) {
Write-Host Отключение сетевого интерфейса
netsh interface set interface name="wifi" admin=DISABLED
Write-Host Ждем 5 секунд
Wait-Event -Timeout 5
Write-Host Включение сетевого интерфейса
netsh interface set interface name="wifi" admin=ENABLED
}

Write-Host Ждем 30 секунд
Wait-Event -Timeout 30
}


Измерение скорости интернет соединения - очень относительная единица, если учесть все нюансы устройства сети. А раз так можно и curl'ом обойтись. Например: »
А как можно задать значение переменной равной "%{speed_download}"? чтобы потом с ней можно было работать в bat файле

greg zakharov
04-01-2020, 16:13
mtsg, самый простой вариант:
@echo off
setlocal enabledelayedexpansion
set "url=http://mirror.yandex.ru/openbsd/6.6/i386/install66.iso"
set "exe=curl -H "Range: bytes=0-31457280" %url% -o nul -sw "%%{speed_download}""
call:dynvar exe speed
echo %speed%
endlocal
exit /b

:: Синтаксис
:: call:dynvar <eval_code> <var_name>
:dynvar
for /f %%i in ('!%~1!') do set /a "%~2=%%~i"
exit /b

mtsg
05-01-2020, 02:35
самый простой вариант: »
Спасибо! Перед выводом скорости почему-то пишет "отсутствующий оператор", это с чем может быть связано?
https://i.imgur.com/tlQYGCa.png

Iska
05-01-2020, 02:56
Но перед выводом скорости почему-то пишет "отсутствующий оператор", это с чем может быть связано? »
Видимо, так set /a реагирует на десятичную точку. Можете добавить в код выделенное:
for /f %%i in ('!%~1!') do 2>nul set /a "%~2=%%~i"




© OSzone.net 2001-2012