Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум 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

 

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


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

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


Я только что поднял образ "Windows XP Professional SP3 x86 RU VL" на VMware всё работает отлично. Как я говорил, наверное система с которой я работал вчера не работало правельно. Уже походу дело когда буду поднимать VPN на компы клиентов посмотрю что получется. Спасибо.

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



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

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


Аватара для mariolast

Ветеран


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

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


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

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) отключен

Не могу понять, в чем дело.

Отправлено: 00:01, 03-04-2015 | #12


Ветеран


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

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


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
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:30, 03-04-2015 | #13


Аватара для mariolast

Ветеран


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

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


Аесли надо в текстовый файл писать?
Задача стоит в следующем.
Создать в текущем каталоге готовый 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 iC<58) then
         str1=str1+i1   
    end if
next
varIP=str1
 
REM ***************************************************
REM *       Забираем маску из файла     *
REM ***************************************************
 
Set ADODBStream = CreateObject("ADODB.Stream")
ADODBStream.Type = 2
ADODBStream.Charset =  "UTF-8"
ADODBStream.Open()
ADODBStream.LoadFromFile("mask.txt")
Text = ADODBStream.ReadText()
ADODBStream.Close()
 
str = Cstr(Text)
str1=""
 
for i=1 to len(str)
    i1=mid(str,i,1) 
    iC=Asc(i1)
    if (iC>45 and iC<58) then
         str1=str1+i1   
    end if
next
varMASK=str1
 
REM ***************************************************
REM *       Забираем шлюз из файла      *
REM ***************************************************
 
Set ADODBStream = CreateObject("ADODB.Stream")
ADODBStream.Type = 2
ADODBStream.Charset =  "UTF-8"
ADODBStream.Open()
ADODBStream.LoadFromFile("gate.txt")
Text = ADODBStream.ReadText()
ADODBStream.Close()
 
str = Cstr(Text)
str1=""
 
for i=1 to len(str)
    i1=mid(str,i,1) 
    iC=Asc(i1)
    if (iC>45 and iC<58) then
         str1=str1+i1   
    end if
next
varGATE=str1
 
REM ***************************************************
REM *   Формируем текст батника для NETSH   *
REM ***************************************************
 
str1 = "netsh interface ip set address name="+chr(34)+"Подключение по локальной сети"+chr(34)+ " static  " + varIP + " " + varMASK + " " + varGATE+" 1"
 
REM *****************************************************
REM *   пишем строку  для запуска батника  в файл *
REM *****************************************************
 
msgbox str1,,"Кошки правят!"
 
test = "setip.bat"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set TestTeam = objFSO.OpenTextFile(test, 2, True)
Set File = objFSO.GetFile(test)    
TestTeam.WriteLine str1
TestTeam.close

Отправлено: 07:48, 03-04-2015 | #14


Ветеран


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

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


mariolast, Перенести настройки можно, создав сценарий конфигурации ipv4:
Код: Выделить весь код
netsh interface ip dump > dump.txt
И запустить его:
Код: Выделить весь код
netsh exec -f dump.txt
Не знаю, как это будет выглядеть на разных машинах

Цитата mariolast:
Аесли надо в текстовый файл писать? »
Код: Выделить весь код
@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

)
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:02, 03-04-2015 | #15


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


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

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


Добрый день всем, возвращаюсь к давней проблеме.
Код ниже работает отлично на все англоязычные всерий 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

Отправлено: 11:12, 31-03-2017 | #16



Компьютерный форум 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




 
Переход