Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - узнать какой IP будет у шлюза перед тем как создать маршрут

Ответить
Настройки темы
CMD/BAT - узнать какой IP будет у шлюза перед тем как создать маршрут

Пользователь


Сообщения: 88
Благодарности: 0

Профиль | Отправить PM | Цитировать


У меня есть пользователи который до сих пор используют Windows XP, для них я нашел/переделал код ниже, потому что в тот момент у меня небыло машина с Windows XP на руках, я тестил на Windows Server 2003, код работал без вопросов, теперь при попытке воспроизвести тот же код на машине Windows XP, к сожалению код не работает. Помогите пожалуйста ешить проблему.
Объясняю зачем мне нужен этот код, шлюз каждый раз меняется (динамический) и мне сначало нужно узнать какой IP будет у шлюза перед тем как создать маршрут.

Код: Выделить весь код
@rasdial VPN username password
@setlocal
@for /f "tokens=1-2 delims=:" %%i in ('ipconfig ^| find "IP Address" ^| find "172.23"') do set GETIP=%%j
@route add 172.30.255.0 mask 255.255.255.0 %GetIp%
@endlocal
Host: 172.30.255.22
Gateway/Шлюз: один случайный IP из данного диапазона 172.23.241.2-172.23.241.254

Спасибо.

*Не забываем что речь идет о Windows XP, в Windows 7 и выше это решается горазда легче.

Отправлено: 10:28, 12-03-2015

 

Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


А ХР локализованная? Попробуйте вместо find "IP Address" find "IP"
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:25, 12-03-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 88
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
А ХР локализованная? Попробуйте вместо find "IP Address" find "IP" »
Не хочу отметить как решено пока не попробую еще как минимум на 2 машины. Но ты реально помог, вроде работает, спасибо огромное!

Код: Выделить весь код
D:\Admin>VPN.bat
Connecting to VPN...
Verifying username and password...
Registering your computer on the network...
Successfully connected to VPN.
Command completed successfully.

 :\Admin>set GETIP= 172.23.241.95

D:\Admin>

Отправлено: 12:18, 12-03-2015 | #3


Пользователь


Сообщения: 88
Благодарности: 0

Профиль | Отправить PM | Цитировать


Скрипт видимо работает только с Windows XP (english version), с локализацией не хочет, IP (%GETIP%) не отображается, почему?

Код: Выделить весь код
@echo off
@rasdial VPN user password
@setlocal
@for /f "tokens=1-2 delims=:" %%i in ('ipconfig ^| find "IP" ^| find "172.23"') do set GETIP=%%j
@ECHO IP address: %GETIP%
@endlocal
Код: Выделить весь код
D:\>VPN2.bat
Установка связи с VPN...
Проверка имени и пароля пользователя...
Регистрация компьютера в сети...
Установлена связь с VPN.
Команда успешно завершена.
IP address:
 
D:\>

Отправлено: 21:19, 12-03-2015 | #4


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


eXtremer, Выложи вывод ipconfig

Отправлено: 21:36, 12-03-2015 | #5


Пользователь


Сообщения: 88
Благодарности: 0

Профиль | Отправить PM | Цитировать


Тот же самый код на Windows Server 2003 (english), отображает IP:

Код: Выделить весь код
D:\Admin>VPN2.bat
Connecting to VPN...
Verifying username and password...
Registering your computer on the network...
Successfully connected to VPN.
Command completed successfully.

 :\Admin>set GETIP= 172.23.241.172
IP address:  172.23.241.172

D:\Admin>

Вот ipconfig после подключения PPTP

Код: Выделить весь код
C:\Documents and Settings\Администратор>ipconfig

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


Подключение по локальной сети - Ethernet адаптер:

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

VPN - PPP адаптер:

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

C:\Documents and Settings\Администратор>

Отправлено: 21:44, 12-03-2015 | #6


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


eXtremer, Попробуйте так:
Код: Выделить весь код
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr "IP.*172\.23.*"') do set "getip=%%i"

Отправлено: 21:51, 12-03-2015 | #7


Пользователь


Сообщения: 88
Благодарности: 0

Профиль | Отправить PM | Цитировать


Foreigner, к сожалению - без изменений.

Код: Выделить весь код
@echo off
@rasdial VPN user password
@setlocal
@for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr "IP.*172\.23.*"') do set "getip=%%i"
@ECHO IP address: %getip%
@endlocal
Код: Выделить весь код
D:\>VPN2.bat
Установка связи с VPN...
Проверка имени и пароля пользователя...
Регистрация компьютера в сети...
Установлена связь с VPN.
Команда успешно завершена.
IP address:

D:\>

Отправлено: 21:57, 12-03-2015 | #8


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


eXtremer, Сложно сказать, вроде в локализованной ХП были какие-то проблемы с парсингом ipconfig, вроде вместо конца строки null. Из файла же (вывода ipconfig) все отработало нормально. Попробуйте так:
Код: Выделить весь код
@echo off
setlocal

for /f "tokens=*" %%i in ('ipconfig') do call:set %%i
echo %ip%
route add 172.30.255.0 mask 255.255.255.0 %ip%
goto:eof

:set
echo %* | 1>nul findstr "IP.*172\.23.*" && (

    for %%i in (%*) do set "ip=%%i"

)

Отправлено: 22:19, 12-03-2015 | #9


Пользователь


Сообщения: 88
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@rasdial VPN user password
@echo off
setlocal

for /f "tokens=*" %%i in ('ipconfig') do call:set %%i
echo %ip%
route add 172.30.255.0 mask 255.255.255.0 %ip%
goto:eof

:set
echo %* | 1>nul findstr "IP.*172\.23.*" && (

    for %%i in (%*) do set "ip=%%i"

)
Код: Выделить весь код
D:\>VPN3.bat
Установка связи с VPN...
Проверка имени и пароля пользователя...
Регистрация компьютера в сети...
Установлена связь с VPN.
Команда успешно завершена.
Режим вывода команд на экран (ECHO) отключен.

Обработка таблиц сетевых маршрутов.

ROUTE [-f] [-p] [команда [узел]
                  [MASK маска] [шлюз] [METRIC метрика] [IF-интерфейс]

  -f           Очистка таблиц маршрутов от записей для всех шлюзов.  При
               указании одной из команд, таблицы очищаются до выполнения
               команды.
  -p           При использовании с командой ADD задает сохранение маршрута
               при перезагрузке системы. По умолчанию маршруты не
               сохраняются при перезагрузке. Игнорируется для остальных команд,
               изменяющих соответствующие постоянные маршруты.
               Этот параметр не поддерживается в Windows 95.
  команда      Одна из четырех команд
                 PRINT     Печать маршрута
                 ADD       Добавление маршрута
                 DELETE    Удаление маршрута
                 CHANGE    Изменение существующего маршрута
  узел         Адресуемый узел.
  MASK         Если вводится ключевое слово MASK, то следующий параметр
               интерпретируется как параметр "маска".
  маска        Значение маски подсети, связываемое с записью для данного
               маршрута.  Если этот параметр не задан, по умолчанию
               подразумевается 255.255.255.255.
  шлюз         Шлюз.
  METRIC       Определение параметра метрика/цена для адресуемого узла.

Поиск всех символических имен узлов проводится в файле сетевой базы данных
NETWORKS. Поиск символических имен шлюзов проводится в файле базы данных
имен узлов HOSTS.

Для команд PRINT и DELETE можно указать узел и шлюз с помощью подстановочных
знаков или опустить параметр "шлюз".

Если адресуемый узел содержит подстановочные знаки * или ?, он используется
в качестве шаблона, и печатаются только соответствующие ему маршруты.
Знак '*' соответствует любой строке, а '?' - ровно одному знаку.
Примеры: 157.*.1, 157.*, 127.*, *224*.
Диагностические сообщения:
    Недопустимое значение MASK вызывает ошибку, если (УЗЕЛ & МАСКА) != УЗЕЛ.
    Например> route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1 IF 1
              Добавление маршрута завершится ошибкой, поскольку указан
              недопустимый параметр сетевой маски: не выполняется условие
              (УЗЕЛ & МАСКА) == УЗЕЛ.

Примеры:

    > route PRINT
    > route ADD 157.0.0.0 MASK 255.0.0.0  157.55.80.1 METRIC 3 IF 2
                    узел^      ^маска     ^шлюз       метрика^    ^
                                                         интерфейс^
      Если IF не задан, то производится попытка найти лучший интерфейс для
      указанного шлюза.
    > route PRINT
    > route PRINT 157*          .... Печать только узлов, начинающихся со 157
    > route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2

      CHANGE используется для изменения только для изменения адреса
      основного шлюза и/или метрики.
    > route PRINT
    > route DELETE 157.0.0.0
    > route PRINT

D:\>
У меня тут какета модифицированная XP версия, завтра может быть найду другую XP-шку, посмотрю что выйдет. Спасибо.

Отправлено: 23:31, 12-03-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - узнать какой IP будет у шлюза перед тем как создать маршрут

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - как узнать какой USB-порт 2.0, а какой 1.1 ? Stivensson Материнские платы и память 7 18-09-2014 00:57
Прочее - Как узнать IP-адрес шлюза в WiFi сети зная только MAC-адрес AP navigator19 Сетевые технологии 4 16-03-2014 12:24
[решено] Надо ли удалять старую краску перед тем как нанести грунтовку? teapot08 Разгон, охлаждение и моддинг 3 07-01-2013 16:43
ожидание 3-5 минут перед тем как начать загружаться с CD/HDD Intergo Непонятные проблемы с Железом 10 19-02-2010 15:19
Показ надписи перед тем как перейти по ссылке на какую то страницу dima1981 Вебмастеру 12 14-11-2008 14:26




 
Переход