Показать полную графическую версию : [решено] Переподключение до посинения.%)
besuperhero
18-07-2016, 03:04
Может кто встречался с подобной практикой...
Дело в том, что мой ISP имеет в пуле 2 диапазона IP-адресов, один из которых можно назвать менее эффективным (новая подсеть - блокировка со стороны ресурсов).
С полноценными скриптами не сталкивался, поэтому меня хватило лишь на:
@echo off
:rc
rasdial /DISCONNECT
rasdial dial-name log psw
netsh int ipv4 show addresses dial-name| findstr IP
set /p choice="r - reconnect; e - exit: "
if not defined choice goto rc
if "%choice%"=="r" goto rc
if "%choice%"=="e" exit
Как вы понимаете, ENTER - в атаке...)
Можно ли что-нибудь придумать с проверкой получаемого IP-адреса/подсети и в случае неудовлетворительного результата goto rasdial?
Если подсеть правильного пула адресов у всех одинаковая, то должен подойти этот скрипт
@(
setlocal enabledelayedexpansion
echo off
)
set "RightSubnet=192.168.123."
set "eth=dial-name"
:rc
rasdial /DISCONNECT
rasdial "!eth!" log psw
echo.& echo wait 3 seconds & ping -w 3000 127.255.255.255 -n 1 > nul
for /f "tokens=2" %%i in (
'netsh int ipv4 show addresses "!eth!" ^| find /i "ip"'
) do set "ip=%%~i"
echo Current ip = !ip!
echo %ip% | find /i "!RightSubnet!" >nul && (
echo Success, the address is good
) || (
echo Warning, the aaddress does not match
GOTO :rc
)
pause
(echo on
endlocal
exit /b %error%
)
besuperhero
21-07-2016, 12:46
dirigar, Спасибо за ответ, попробовал заранить скрипт, получил флуд:
"Достигнут уровень рекурсии, максимально возможный для команды SETLOCAL."
Неэффективная подсеть: 95.46.0.0/16
Эффективная подсеть: 31.135.0.0/16
хм. зацикливание возможно. Поправил: 10 Раз пытается переподключиться
@(
setlocal enabledelayedexpansion
echo off
)
set "RightSubnet=31.135."
set "eth=dial-name"
set "iter=0"
set "cycles=10"
:rc
rasdial /DISCONNECT
rasdial "!eth!" log psw
echo.& echo wait 1 seconds & ping -w 3000 127.255.255.255 -n 1 > nul
for /f "tokens=2" %%i in (
'netsh int ipv4 show addresses "!eth!" ^| find /i "ip"'
) do set "ip=%%~i"
echo Current ip = !ip!
echo %ip% | find /i "!RightSubnet!" >nul && (
echo Success, the address is good
) || (
echo Warning, the aaddress does not match
if !iter! LSS !cycles! set /a "iter+=1" & GOTO :rc
)
echo.
if !iter! GEQ !cycles! (echo Fault. ) else (echo Success)
(echo on
endlocal
exit /b %error%
)
besuperhero
25-07-2016, 14:48
dirigar, Спасибо Вам большое! Все работает!
Немного подстроил под себя: увеличил количество циклов, убрал задержку между :rc (проходит нормально), добавил выполнение записи дополнительных маршрутов после успешного результата.
Еще раз, благодарю!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.