1 (изменено: Valera, 2012-02-09 18:34:35)

Тема: CMD/BAT: Определить шлюз или default route?

Добрый день, всем.

Есть вот такой cmd скрипт

@echo off
SET GW101=192.168.2.101
SET GW102=192.168.2.102
SET GW222=192.168.2.222

SET PING=ping -n 2 ya.ru > nul
SET GATEWAY101=netsh interface ip set address name="local" gateway=%GW101% gwmetric=0
SET GATEWAY102=netsh interface ip set address name="local" gateway=%GW102% gwmetric=0
SET GATEWAY222=netsh interface ip set address name="local" gateway=%GW222% gwmetric=0

@%PING%
@IF ERRORLEVEL 1 GOTO route2
@IF ERRORLEVEL 0 GOTO alive

:route2
@%GATEWAY102%
@ECHO "Change route on %GW102% gateway at %DATE%%TIME%" >> C:\inet.log
@%PING%
@IF ERRORLEVEL 1 GOTO route3
@IF ERRORLEVEL 0 GOTO alive
@GOTO end

:route3
@%GATEWAY222%
@ECHO "Change route on %GW222% gateway at %DATE%%TIME%" >> C:\inet.log
@%PING%
@IF ERRORLEVEL 1 GOTO route1
@IF ERRORLEVEL 0 GOTO alive
@GOTO end

:route1
@%GATEWAY101%
@ECHO "Change route on %GW101% gateway at %DATE%%TIME%" >> C:\inet.log
@%PING%
@IF ERRORLEVEL 1 GOTO end
@IF ERRORLEVEL 0 GOTO alive


:alive
@echo "Inet work - %DATE%%TIME%" >> C:\inet.log
@ECHO Alive
@GOTO end

:end
@ECHO Goodbye

мне нужно добавить определение шлюза или маршрута по умолчанию. Посоветуйте плиз.

2

Re: CMD/BAT: Определить шлюз или default route?

не совсем понял, определение текущего шлюза или переназначение основного шлюза ?
route change ... ?

Я конечно далек от мысли... (с)

3

Re: CMD/BAT: Определить шлюз или default route?

Поясню в windows шлюз можно посмотреть командой ipconfig /all или route print
===========================================================================
Постоянные маршруты:
  Сетевой адрес            Маска    Адрес шлюза      Метрика
          0.0.0.0          0.0.0.0    192.168.1.200  По умолчанию
===========================================================================

Или

   Основной шлюз. . . . . . . . . : 192.168.1.200
   DNS-серверы. . . . . . . . . . . : 192.168.1.101
                                       192.168.1.200
Так вот интересует как через cmd сценарий получить именно 192.168.1.200, только этот набор цифр, а остальное обрезать.

Еще можно получить с помощью пару средств, но они реже используются.

4

Re: CMD/BAT: Определить шлюз или default route?

Пойдет ?

for /f "tokens=3" %%x in ('route print 0.0.0.0 ^| find "0.0.0.0"') do echo %%x
Я конечно далек от мысли... (с)

5

Re: CMD/BAT: Определить шлюз или default route?

Отличный, ход. Я об этом не подумал.

6 (изменено: Valera, 2012-02-20 18:22:48)

Re: CMD/BAT: Определить шлюз или default route?

smaharbA пишет:

Пойдет ?

for /f "tokens=3" %%x in ('route print 0.0.0.0 ^| find "0.0.0.0"') do echo %%x

Данный способ не всегда отрабатывает верно.
Может есть еще пути определения?
wmic?

NICCONFIG GET DefaultIPGateway выдаст, примерно вот такую инфу.

wmic:root\cli>NICCONFIG GET DefaultIPGateway
DefaultIPGateway
{"192.168.2.101"}

Но вот вопрос, как убрать пробелы и не нужные знаки?

7

Re: CMD/BAT: Определить шлюз или default route?

echo off
setlocal ENABLEDELAYEDEXPANSION

set n=-1
::wmic nicconfig where ipenabled=true get DefaultIPGateway /format:value
for /f %%x in ('wmic nicconfig where ipenabled^=true get DefaultIPGateway /format:value ^| find /i "DefaultIPGateway"') do (
    set /a n=!n! + 1
    set "%%x"
    set DefaultIPGateway=!DefaultIPGateway:"=!
    set DefaultIPGateway=!DefaultIPGateway:{=!
    set DefaultIPGateway=!DefaultIPGateway:}=!
    set DefaultIPGateway_!n!=!DefaultIPGateway!
)
for /l %%x in (0,1,!n!) do (
    echo !DefaultIPGateway_%%x!
)
Я конечно далек от мысли... (с)

8

Re: CMD/BAT: Определить шлюз или default route?

Спасибо.

echo off

Заменить на
@echo off

Этот способ даже в 7ке нормально отрабатывает.

9 (изменено: Valera, 2012-02-21 17:13:56)

Re: CMD/BAT: Определить шлюз или default route?

Еще вопрос, как мне добавить в эту часть

@echo "Inet work - %DATE%%TIME%" >> C:\inet.log

Вывод из

echo off
setlocal ENABLEDELAYEDEXPANSION

set n=-1
::wmic nicconfig where ipenabled=true get DefaultIPGateway /format:value
for /f %%x in ('wmic nicconfig where ipenabled^=true get DefaultIPGateway /format:value ^| find /i "DefaultIPGateway"') do (
    set /a n=!n! + 1
    set "%%x"
    set DefaultIPGateway=!DefaultIPGateway:"=!
    set DefaultIPGateway=!DefaultIPGateway:{=!
    set DefaultIPGateway=!DefaultIPGateway:}=!
    set DefaultIPGateway_!n!=!DefaultIPGateway!
)
for /l %%x in (0,1,!n!) do (
    echo !DefaultIPGateway_%%x!
)

10

Re: CMD/BAT: Определить шлюз или default route?

так же

...(
    echo !DefaultIPGateway_%%x! >> C:\inet.log
)

Я конечно далек от мысли... (с)

11

Re: CMD/BAT: Определить шлюз или default route?

Делаю так

@ECHO Alive work fine - %DATE%%TIME% via !DefaultIPGateway_%%x! >> C:\inet.log

В итоге получаю

Alive work fine - 28.02.201218:07:48,60 via !DefaultIPGateway_%x!

Что делаю не верно?

12 (изменено: stir, 2012-02-29 10:52:35)

Re: CMD/BAT: Определить шлюз или default route?

Меня устроил мой вариант.. я слегка модернизировал ваш и получил вот это:

echo off
setlocal ENABLEDELAYEDEXPANSION

set n=-1
::wmic nicconfig where ipenabled=true get DefaultIPGateway /format:value
for /f %%x in ('wmic nicconfig where ipenabled^=true get DefaultIPGateway /format:value ^| find /i "DefaultIPGateway"') do (
    set /a n=!n! + 1
    set "%%x"
    set DefaultIPGateway=!DefaultIPGateway:"=!
    set DefaultIPGateway=!DefaultIPGateway:{=!
    set DefaultIPGateway=!DefaultIPGateway:}=!
    set DefaultIPGateway_!n!=!DefaultIPGateway!
)

set newname=%COMPUTERNAME%_%DATE%
 echo !%newname% >> C:\inet.log

for /l %%x in (0,1,!n!) do (
    echo !DefaultIPGateway_%%x! >> C:\inet.log
)
Любители построили Ковчег, а профессионалы - Титаник.