Войти

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


dellik77
26-05-2016, 15:10
здравствуйте, есть код переподключения pppoe-соединения по заданному интервалу с помощью программки nircmd (где брал - уже не помню).
:loop
D:\soft\nircmd-x64\nircmd.exe rashangup "PPPoE"
ping -n 1 -w 1000 192.168.254.254 >nul
D:\soft\nircmd-x64\nircmd.exe rasdial "PPPoE"
ping -n 1 -w 35000 192.168.254.254 >nul
goto loop

подскажите пожалуйста, как мне перед пингом с ожиданием в 35с сделать проверку полученного pppoe-подключением айпи (нужны только 2 первых числа из ip). суть такова - у провайдера 2 диапазона, 1 серые айпишки, 2 белые. но мне необходимо использовать только белые, в связи с этим прошу помочь, как оформить код, чтобы если получит айпишку из серого диапазона, то опять происходило переподключение pppoe ?

Elven
26-05-2016, 16:44
я так понимаю первые два октета не изменяются, т.е. если например ip начинается с "123.123." - белый, если с "111.111." - серый.
если так то можно приблизительно таким макаром:
:loop
D:\soft\nircmd-x64\nircmd.exe rashangup "PPPoE"
ping -n 1 -w 1000 192.168.254.254 >nul
ipconfig | find "123.123." >NUL && goto :EOF || D:\soft\nircmd-x64\nircmd.exe rasdial "PPPoE" & ping -n 1 -w 35000 192.168.254.254 >nul & goto :loop
т.о. если получен белый - батник завершает работу, если серый - начинается с :loop.

dellik77
26-05-2016, 17:05
почти ) спасибо большое, сейчас попробую сделать по аналогии с Вашим кодом, логически чуток не то, что мне нужно, т.к. мне необходимо в любом случае переподключать инет ) тоесть если получен серый ip, тогда сразу переподключаем, а если белый - ждём 35с и тогда переподключаем и дальше по кругу

вот вобщем, вроде работает )
при условии, что белая айпишка начинается на 111.222
:loop1
D:\soft\nircmd-x64\nircmd.exe rashangup "PPPoE"
ping -n 1 -w 1000 192.168.254.254 >nul
D:\soft\nircmd-x64\nircmd.exe rasdial "PPPoE"
ipconfig | find "111.222." >NUL && goto :loop2 || ping -n 1 -w 1000 192.168.254.254 >nul & goto :loop1
:loop2
ping -n 1 -w 35000 192.168.254.254 >nul
goto loop1

ещё раз большое спасибо Elven за предоставленный пример :)

Iska
26-05-2016, 17:31
ping -n 1 -w 35000 …»
Паузу тоже можно сделать посредством nircmd. В том числе в виде «cmdwait».




© OSzone.net 2001-2012