|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - узнать какой IP будет у шлюза перед тем как создать маршрут |
|
|
CMD/BAT - узнать какой IP будет у шлюза перед тем как создать маршрут
|
Пользователь Сообщения: 88 |
У меня есть пользователи который до сих пор используют 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 Gateway/Шлюз: один случайный IP из данного диапазона 172.23.241.2-172.23.241.254 Спасибо. *Не забываем что речь идет о Windows XP, в Windows 7 и выше это решается горазда легче. |
|
Отправлено: 10:28, 12-03-2015 |
Ветеран Сообщения: 1758
|
А ХР локализованная? Попробуйте вместо find "IP Address" find "IP"
|
Отправлено: 11:25, 12-03-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
Отправлено: 12:18, 12-03-2015 | #3 |
Пользователь Сообщения: 88
|
Профиль | Отправить 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 |
Отправлено: 21:19, 12-03-2015 | #4 |
Ветеран Сообщения: 1758
|
eXtremer, Выложи вывод ipconfig
|
|
Отправлено: 21:36, 12-03-2015 | #5 |
Пользователь Сообщения: 88
|
Профиль | Отправить 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
|
|
Отправлено: 21:51, 12-03-2015 | #7 |
Пользователь Сообщения: 88
|
Профиль | Отправить 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 |
Отправлено: 21:57, 12-03-2015 | #8 |
Ветеран Сообщения: 1758
|
eXtremer, Сложно сказать, вроде в локализованной ХП были какие-то проблемы с парсингом ipconfig, вроде вместо конца строки null. Из файла же (вывода ipconfig) все отработало нормально. Попробуйте так:
|
Отправлено: 22:19, 12-03-2015 | #9 |
Пользователь Сообщения: 88
|
Профиль | Отправить 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:\> |
Отправлено: 23:31, 12-03-2015 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - как узнать какой 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 |
|