Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Windows > .bat и динамический route


Автор: pr0ka33a 11.8.2008, 11:58
при подключении второго впн соединения DHCP сервер выдает каждый раз новый ip
и я через этот ip прописываю роуты.
я хочу написать батник который бы делал это все за меня. Только не знаю всех возможностей этой штуки.
что я хочу сделать. 
1) что бы скрип прописывал ipconfig
2) брал из нужной строчки ip адрес (ip=х)
3) и вставлял его в route add 0.0.0.0 mask 255.255.255.255 x

можно ли это осуществить в cmd?

Автор: 01MDM 11.8.2008, 19:18
pr0ka33a, 

Код

@echo off  

for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr IP-.*') do set ip=%%i
set ip=%ip:~1%

route add 0.0.0.0 mask 255.255.255.255 %ip%


Или:
Код

@echo off

for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr IP-.*') do (
       route add 0.0.0.0 mask 255.255.255.255%%i
)

Автор: nitr 11.8.2008, 21:26
01MDM, отлично, но тут сразу несколько IP берутся, а можно например конкретно у PPP-адаптера? smile

Автор: pr0ka33a 12.8.2008, 11:36
Цитата(nitr @ 11.8.2008,  21:26)
01MDM, отлично, но тут сразу несколько IP берутся, а можно например конкретно у PPP-адаптера? smile

если учесть что их два ) основной и вторичный с которым мне и нужно проделавать эту операцию )

Автор: marykone 12.8.2008, 11:59
Цитата(pr0ka33a @  11.8.2008,  11:58 Найти цитируемый пост)
DHCP сервер выдает каждый раз новый ip
и я через этот ip прописываю роуты.

а не проще на dhcp зарезервировать адрес, за интерфейсом, и прописать 1 раз ?
или прописать маршрут для всей подсети ? 

Автор: nitr 12.8.2008, 12:10
pr0ka33a, мне понравилось решение, но спросил я у него, как у знающего, как выбрать определенный, т.к. findstr  не работает с "многостроками".

Например, на ПК локалка, затем есть подсеть в другом городе, куда подключаешься по VPN, там резервировать ip-адрес нельзя, только DHCP. Маршруты определённые прописывать надо smile
Решение отлично, но оно видит два интерфейса/адаптера, локалки и ВПН, а нужен только впн PPP/WAN.

я сделал с помощью Perl/Delphi программку, но заинтерсовался данным решением через "батник" smile
 smile 

Автор: Dobermann 12.8.2008, 12:16
nitr, http://forum.ru-board.com/topic.cgi?forum=62&topic=13556&start=1340#lt

Автор: nitr 12.8.2008, 16:03
Dobermann, здесь тоже форум smile
Имхо, раз 01MDM набросал такой ответ, то может и мне поможет, просто "выудить" только из PPP (WAN)...
Dobermann, там никто не появлялся 2 года.

P.S.: Dobermann, это антиреклама Винграду ? smile  smile 

Автор: dumb 13.8.2008, 03:03
nitr, тут уже так же кратко не получается:
Код

@echo off
setlocal EnableExtensions EnableDelayedExpansion
for /f "tokens=1,2* delims=:" %%i in ('ipconfig /all') do (
  if !begin! EQU 1 (
    for /f "tokens=1 delims=- " %%o in ("%%i") do (
      if "%%o" == "IP" (
        set IP=%%j
        goto :found
      )
    )
  )
  set temp=%%j
  if "!temp:~0,5!" == " WAN " set begin=1
)
echo WAN interface not found
goto :EOF
:found
route add 0.0.0.0 mask 255.255.255.255%IP%

Автор: nitr 13.8.2008, 08:09
dumb, спасибо, есть над чем подумать!

Автор: 01MDM 13.8.2008, 08:49
nitr, 

Извиняюсь, сразу ответить не мог.  Если вариант от dumb не подойдет, то попробуй воспользоваться таким вариантом. Сразу предупрежу, проверить негде так как у меня только одна сетевая.

Код

@echo off
setlocal
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr IP-.*') do set /a cnt+=1 && call:route %%i
goto:eof

:route
if %cnt%==2 route add 0.0.0.0 mask 255.255.255.255 %1


Единственно что надо сделать самому это посмотреть вывод команды `ipconfig` и посчитать каким по порядку интерфейсом является нужный тебе и в соответствии с этим изменить `if %cnt%==2`

Если надо универсальный (ну почти) батник, то покажи вывод ipconfig в консоль.

Автор: nitr 13.8.2008, 21:52
Цитата

Настройка протокола IP для Windows


Network - Ethernet адаптер:

        DNS-суффикс этого подключения . . :
        IP-адрес  . . . . . . . . . . . . : 192.168.1.4
        Маска подсети . . . . . . . . . . : 255.255.255.248
        Основной шлюз . . . . . . . . . . : 192.168.1.1

Vpn - PPP адаптер:

        DNS-суффикс этого подключения . . :
        IP-адрес  . . . . . . . . . . . . : 192.168.10.10
        Маска подсети . . . . . . . . . . : 255.255.255.255
        Основной шлюз . . . . . . . . . . :


Автор: 01MDM 14.8.2008, 08:24
Должно работать правильно, если только один адаптер "PPP"

Код

@echo off
setlocal

for /f "tokens=1 delims=:" %%i in ('ipconfig ^| findstr /n - PPP') do set n=%%i
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| more +%n% ^| findstr IP-.*') do (
    route add 0.0.0.0 mask 255.255.255.255%%i
    goto:eof
) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)