Компьютерный форум 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=316892)

besuperhero 18-07-2016 03:04 2651732

Переподключение до посинения.%)
 
Может кто встречался с подобной практикой...
Дело в том, что мой 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?

dirigar 21-07-2016 06:36 2652755

Если подсеть правильного пула адресов у всех одинаковая, то должен подойти этот скрипт

Код:

@(
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 2652878

dirigar, Спасибо за ответ, попробовал заранить скрипт, получил флуд:
"Достигнут уровень рекурсии, максимально возможный для команды SETLOCAL."
Неэффективная подсеть: 95.46.0.0/16
Эффективная подсеть: 31.135.0.0/16

dirigar 21-07-2016 21:30 2653061

хм. зацикливание возможно. Поправил: 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 2653985

dirigar, Спасибо Вам большое! Все работает!

Немного подстроил под себя: увеличил количество циклов, убрал задержку между :rc (проходит нормально), добавил выполнение записи дополнительных маршрутов после успешного результата.

Еще раз, благодарю!


Время: 06:03.

Время: 06:03.
© OSzone.net 2001-