Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как вывести шлюз в командной строке? (http://forum.oszone.net/showthread.php?t=332803)

zai 26-01-2018 18:33 2793971

Как вывести шлюз в командной строке?
 
команда route print выводит маршруты, как вывести отдельно шлюз?
чтобы отражалось только 192.168.0.1
Пробовал использовать find и findstr
route print | findstr "192.168.0.1", но он выдает еще 192.168.0.1ХХ адреса, как сделать чтобы был только 192.168.0.1

megaloman 26-01-2018 20:51 2793978

Код:

@Echo Off
cls

chcp 437 >nul
FOR /F "tokens=1* delims=:" %%a in ('ipconfig ^| find "Default Gateway"') Do Set Gateway=%%b &GoTo :Continue
:Continue
Set "Gateway=%Gateway: =%"
chcp 866 >nul

Echo "%Gateway%"

pause


alpap 26-01-2018 22:12 2793994

подкину пару своих вариантов, пусть здесь хранятся
№1
Код:

@echo off
set "na="& set "shl="
for /f "tokens=2 delims==" %%a in ('wmic path Win32_networkadapter where ^(NetConnectionStatus^="2"^) get NetConnectionID /value^|find "="') do if not defined na set "na=%%a"
for /f "delims=[]" %%a in ('ipconfig /all^|find /n "%na%"') do set "ns=%%a"
for /f "tokens=2 delims=:" %%a in ('ipconfig /all^|more +%ns%^|find "Основной шлюз"') do if not defined shl set "shl=%%a"
echo %shl: =%
pause

№2
Код:

@echo off
for /f "tokens=2 delims=:" %%a in ('netsh interface ip show addresses name^="Имя подключения"^|find "Основной шлюз"') do set "shl=%%a"
echo %shl: =%
pause


zai 26-01-2018 23:10 2794000

megaloman, это не то. Мне нужно знать есть в данный момент 192.168.0.1 или вместо него другой шлюз. Или прописано несколько шлюзов, но среди них есть 192.168.0.1, т.е. не ipconfig ^| find "Default Gateway", а ipconfig | find "192.168.0.1", но что бы не выводилось 192.168.0.1ХХ (после 1 не было значений, например 192.168.0.12, 192.168.0.123)
alpap, варианты абсолютно не рабочие.

megaloman 26-01-2018 23:41 2794004

Цитата:

Цитата zai
Мне нужно знать есть в данный момент 192.168.0.1 или вместо него другой шлюз. Или прописано несколько шлюзов, но среди них есть 192.168.0.1 »

Код:

@Echo Off
cls

Set "FindGateway=192.168.0.1"

chcp 437 >nul

Set /A L=0
FOR /F "tokens=1* delims=:" %%a in ('ipconfig ^| find "Default Gateway"') Do Echo %%b &If "%%b"==" %FindGateway%" Set /A L=1
chcp 866 >nul

If %L%==0 (Echo Gateway %FindGateway% NOT present) else (Echo Gateway %FindGateway% PRESENT)
pause


zai 27-01-2018 09:55 2794030

megaloman, не работает, прописал несколько шлюзов:
route add 0.0.0.0 mask 0.0.0.0 192.168.0.1
route add 0.0.0.0 mask 0.0.0.0 192.168.0.12
route add 0.0.0.0 mask 0.0.0.0 192.168.0.123
Когда я прописываю в bat ip каждого шлюза по отдельности, то видит он всегда только основной шлюз, но вместо 192.168.0.1 может другой стать основным шлюзом, тогда bat не найдет нужный IP, т.е. есть он там или нет.

Busla 27-01-2018 12:00 2794042

zai, используйте регулярные выражения

для шлюза по умолчанию:
Код:

route print | findstr /r /c:"^ *0\.0\.0\.0 *0\.0\.0\.0 *192\.168\.0\.1 "
любого другого шлюза:
Код:

route print | findstr /r /c:"^ *[0-9]*\.[0-9]*\.[0-9]*\.[0-9]* *[0-9]*\.[0-9]*\.[0-9]*\.[0-9]* *192\.168\.0\.1 "

megaloman 27-01-2018 12:38 2794049

zai,
Код:

@Echo Off
cls

Set "FindGateway=192.168.0.1"

Set /A L=0
FOR /F "tokens=3 delims= " %%a in ('route print') Do If "%%a"=="%FindGateway%" Set /A L=1

If %L%==0 (Echo Gateway %FindGateway% NOT present) else (Echo Gateway %FindGateway% PRESENT)
pause



Время: 03:23.

Время: 03:23.
© OSzone.net 2001-