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

Ответить
 • Просмотры: 1
Аватара пользователя
eXtremer

Re: CMD/BAT - узнать какой IP будет у шлюза перед тем как создать маршрут

Сообщение eXtremer »

Код:

Код: Выделить всё

@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-шку, посмотрю что выйдет. Спасибо.
Аватара пользователя
mariolast

Re: CMD/BAT - узнать какой IP будет у шлюза перед тем как создать маршрут

Сообщение mariolast »

Есть такой батник



REM создает в текущем каталоге готовый BAT-файл для

REM переноса текущих IP настроек на другой компьютер

REM и файл с именем компьютера



CLS

echo on



ipconfig | find "IPv4" > temp.txt

for /f "delims=: tokens=1-26" %%C in (temp.txt) do (echo %%D > ip.txt)



ipconfig | find "Маска" > temp.txt

for /f "delims=: tokens=1-26" %%C in (temp.txt) do (echo %%D > mask.txt)



ipconfig | find "шлюз" > temp.txt

for /f "delims=: tokens=1-26" %%C in (temp.txt) do (echo %%D > gate.txt)



Вот на последнем этапе в файле temp.txt

Основной шлюз. . . . . . . . . : 192.168.1.1

Основной шлюз. . . . . . . . . :

Основной шлюз. . . . . . . . . :



А в gate.txt записывается

Режим вывода команд на экран (ECHO) отключен



Не могу понять, в чем дело.
Аватара пользователя
Foreigner

Re: CMD/BAT - узнать какой IP будет у шлюза перед тем как создать маршрут

Сообщение Foreigner »

mariolast, Лучше через wmic:



Код:

Код: Выделить всё

@echo off
setlocal
set "wmic=wmic nicconfig where ipenabled='true' get DefaultIPGateway,IPAddress,IPSubnet /value"
for /f %%i in (' "%wmic%" ') do 1>nul set "%%i"
for /f "tokens=1 delims={}," %%i in ("%DefaultIPGateway%") do echo gateway: %%~i
for /f "tokens=1 delims={}," %%i in ("%IPAddress%") do echo ipaddress: %%~i
for /f "tokens=1 delims={}," %%i in ("%IPSubnet%") do echo ipsubnet: %%~i
Аватара пользователя
mariolast

Re: CMD/BAT - узнать какой IP будет у шлюза перед тем как создать маршрут

Сообщение mariolast »

Аесли надо в текстовый файл писать?

Задача стоит в следующем.

Создать в текущем каталоге готовый BAT-файл для переноса текущих IP настроек на другой компьютер и файл с именем компьютера

Содержание батника





Код:

Код: Выделить всё

CLS
echo off
ipconfig | find "IPv4" > temp.txt
for /f "delims=: tokens=1-26" %%C in (temp.txt) do (echo %%D > ip.txt)
ipconfig | find "Маска"  > temp.txt
for /f "delims=: tokens=1-26" %%C in (temp.txt) do (echo %%D > mask.txt)
ipconfig | find "шлюз" > temp.txt
for /f "delims=: tokens=1-26" %%C in (temp.txt) do (echo %%D > gate.txt)
pause 
vbs_getIP.vbs
del temp.txt
del gate.txt
del mask.txt
del ip.txt
del setip.txt

Содержание vbs скрипта





Код:

Код: Выделить всё

Set ADODBStream = CreateObject("ADODB.Stream")
ADODBStream.Type = 2
ADODBStream.Charset =  "UTF-8"
ADODBStream.Open()
ADODBStream.LoadFromFile("ip.txt")
Text = ADODBStream.ReadText()
ADODBStream.Close()
dim str
str = Cstr(Text)
str1=""
for i=1 to len(str)
    i1=mid(str,i,1) 
    iC=Asc(i1)
    if (iC>45 and iC45 and iC45 and iC
Аватара пользователя
Foreigner

Re: CMD/BAT - узнать какой IP будет у шлюза перед тем как создать маршрут

Сообщение Foreigner »

mariolast, Перенести настройки можно, создав сценарий конфигурации ipv4:



Код:

Код: Выделить всё

netsh interface ip dump > dump.txt

И запустить его:



Код:

Код: Выделить всё

netsh exec -f dump.txt

Не знаю, как это будет выглядеть на разных машинах




Цитата mariolast:



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






Код:

Код: Выделить всё

@echo off
setlocal
set "wmic=wmic nicconfig where ipenabled='true' get DefaultIPGateway,IPAddress,IPSubnet /value"
for /f %%i in (' "%wmic%" ') do 1>nul set "%%i"
1>file.txt (
    for /f "tokens=1 delims={}," %%i in ("%DefaultIPGateway%") do echo gateway: %%~i
    for /f "tokens=1 delims={}," %%i in ("%IPAddress%") do echo ipaddress: %%~i
    for /f "tokens=1 delims={}," %%i in ("%IPSubnet%") do echo ipsubnet: %%~i
)
Аватара пользователя
eXtremer

Re: CMD/BAT - узнать какой IP будет у шлюза перед тем как создать маршрут

Сообщение eXtremer »

Добрый день всем, возвращаюсь к давней проблеме.

Код ниже работает отлично на все англоязычные всерий Windows. А вот с на руских через раз или вовсе не работает. Что можно изминить чтобы кода рабтол на все версий ОС не важно какой язык?

Проблема в том что код работает на половину, он создает подключение но маршрут не может добавить, не понимает команду: @route add 172.23.250.250 mask 255.255.255.255 %GetIp%

Помогите разобратся.



*В 99% из случай я добавляю этот код на машинах с Windows XP.





Код:

Код: Выделить всё

@rasdial VPN User Pass
@setlocal
@for /f "tokens=1-2 delims=:" %%i in ('ipconfig ^| find "IP" ^| find "172.23"') do set GETIP=%%j
@route add 172.23.250.250 mask 255.255.255.255 %GetIp%
@endlocal
@exit 0
Ответить

Вернуться в «Скриптовые языки администрирования Windows»