Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Определить скорость подключения к интернету (http://forum.oszone.net/showthread.php?t=343466)

mtsg 29-12-2019 10:58 2902699

Определить скорость подключения к интернету
 
Подскажите пожалуйста, как определить скорость подключения к интернету и в зависимости от значения выполнить команды.
Организовать проверку значения скорости в цикле.
Заранее благодарен.

Уже пробовал следующее:
- AdapterWatch от nirsoft - через консоль почему-то не экспортирует значение Calculated Speed Of Received Data в файл, с которым можно было бы работать дальше, хотя в gui показывает исправно.
- Используя netstat, похоже требуется адаптация, при запуске пишет "используемая скорость - 0 Байт/сек"
- Консольную утилиту ookla-speedtest, потребляет достаточно много трафика, и не совсем понятно как считать данные.


Первоначальная задача по определению скорости загрузки в приложении

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






Iska 29-12-2019 11:25 2902701

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

mtsg 29-12-2019 11:29 2902703

Iska, имеется ввиду скорость загрузки для utorrent

DJ Mogarych 30-12-2019 09:40 2902854

Цитата:

Цитата mtsg
if SPEED>10 goto ok
if SPEED<10 goto reconnect »

Больше и меньше 10 чего?

mtsg 30-12-2019 11:34 2902865

DJ Mogarych, мегабит

mtsg 03-01-2020 05:16 2903304

Обновил задачу в первом сообщении

yurfed 03-01-2020 05:56 2903309

Цитата:

Цитата mtsg
Обновил задачу в первом сообщении »

Вы чем там меряетесь, пипками, пипетками, титьками или пингвинками?
Цитата:

Цитата mtsg
if SPEED>10 goto ok
if SPEED<10 goto reconnect »

Конкретика ещё та.
Если больше 10 слов в минуту, всё хокей, меньше -бежим обратно.
Цитата:

Цитата mtsg
Обновил задачу в первом сообщении »

Полный набор букв покажите, что вы там налепили

mtsg 03-01-2020 06:26 2903312

Цитата:

Цитата yurfed
Полный набор букв покажите, что вы там налепили »

Все что есть написал в первом сообщении, ничего другого к сожалению нет :)
Задача в том как определить текущее значение скорости.

Iska 03-01-2020 10:24 2903327

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

mtsg 03-01-2020 10:34 2903330

Iska, а как можно определить текущую скорость подключения к интернету?

DJ Mogarych 03-01-2020 15:05 2903368

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

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 2903438

Измерение скорости интернет соединения - очень относительная единица, если учесть все нюансы устройства сети. А раз так можно и 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 2903442

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

mtsg 04-01-2020 10:31 2903460

Цитата:

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

Спасибо! Вроде работает, задействованный интерфейс только один(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
}



Цитата:

Цитата greg zakharov
Измерение скорости интернет соединения - очень относительная единица, если учесть все нюансы устройства сети. А раз так можно и curl'ом обойтись. Например: »

А как можно задать значение переменной равной "%{speed_download}"? чтобы потом с ней можно было работать в bat файле

greg zakharov 04-01-2020 16:13 2903498

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 2903566

Цитата:

Цитата greg zakharov
самый простой вариант: »

Спасибо! Перед выводом скорости почему-то пишет "отсутствующий оператор", это с чем может быть связано?

Iska 05-01-2020 02:56 2903567

Цитата:

Цитата mtsg
Но перед выводом скорости почему-то пишет "отсутствующий оператор", это с чем может быть связано? »

Видимо, так set /a реагирует на десятичную точку. Можете добавить в код выделенное:
Код:

for /f %%i in ('!%~1!') do 2>nul set /a "%~2=%%~i"


Время: 12:01.

Время: 12:01.
© OSzone.net 2001-