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

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

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

Новый участник


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

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


Несколько сетевых адаптеров, настройки получают по dhcp.
Нужно брать текущий шлюз для одного из адаптеров, и использовать его дальше в скрипте.
Примерно так:
Код: Выделить весь код
Получить шлюз для "ethernet адаптер1"
route add 0.0.0.0 mask 0.0.0.0 'шлюз для "ethernet адаптер1"'

Отправлено: 22:45, 22-03-2017

 

Новый участник


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

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


Все, я понял. Не стоило использовать notepad++.
Не знаю, что с ним не так. Если редактировать в блокноте, работает.

Отправлено: 20:00, 11-04-2017 | #31



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

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


Ветеран


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

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


neth1,
чего, notepad++ неплохой редактор, но я лично пользуюсь AkelPad и кстати не только для удобства в настройках надо выставить перенос по строкам, возможно и к notepad++ это относится, ну и нужных плагинов включить для удобства, например подсветка кода в AkelPad мне очень нравиться, причем можно самому допилить что я успешно и сделал.

Отправлено: 00:10, 12-04-2017 | #32

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата alpap:
не только для удобства в настройках »
В нём и сохранять в разных кодировках можно (например, в 866, как нужно здесь).

-------
Mikhail Zhilin


Отправлено: 00:41, 12-04-2017 | #33


Новый участник


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

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


Я не знаю в чем проблема с notepad++. Сохранял в 866.
Теперь проблема с использованием полученного адреса шлюза.
Как записать %shl: =% в "route add"?
Безрезультатно погуглил и поэксперементировал с кавычками, все время выдает "неверный адрес шлюза".

Отправлено: 00:59, 12-04-2017 | #34


Ветеран


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

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


Цитата neth1:
Как записать %shl: =% в "route add" »
в "route add" это куда, вы хоть поясняйте прозрачно, вставить в какой-то код?
Цитата neth1:
"неверный адрес шлюза" »
а в каком случае верный? Если ручками прописывать - не ругается?

Отправлено: 03:46, 12-04-2017 | #35


Новый участник


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

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


Вот так вырисовывается:
Код: Выделить весь код
@echo off
set "na=openvpn"
set "shl="
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: =%
set "na=ethernet"
set "shl="
for /f "delims=[]" %%b in ('ipconfig /all^|find /n "%nb%"') do set "ns=%%b"
for /f "tokens=2 delims=:" %%b in ('ipconfig /all^|more +%ns%^|find "Основной шлюз"') do if not defined shl set "shb=%%b"
echo %shb: =%
route delete 0.0.0.0 mask 0.0.0.0
route add -p %shb: =% mask 255.255.255.255 %shl: =%
route add 0.0.0.0 mask 0.0.0.0 %shl: =%
pause
Если адреса шлюзов вводить ручками, все работает.

Отправлено: 06:52, 12-04-2017 | #36

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата neth1:
set "na=openvpn"
set "shl=" »
Код: Выделить весь код
REM Присвоить переменной na значение openvpn
set na=openvpn
REM Сбросить (удалить) переменную shl
set shl=
(без кавычек; после знака равенства — ничего).

Цитата neth1:
echo %shb: =%
..
route add -p %shb: =% mask 255.255.255.255 %shl: =%»
Код: Выделить весь код
REM Вывести переменную shb с её значением
REM (после имени переменной — ничего)
set shb
REM Но можно и в форме
REM echo %shb%
REM — т.е. только её значение
REM
REM Добавить постоянный маршрут с использованием значений двух переменных
route add -p %shb% mask 255.255.255.255 %shl%
Ну и ещё есть минимум одна строка с неправильной (тот же принцип) работой с переменными.

-------
Mikhail Zhilin


Последний раз редактировалось mwz, 12-04-2017 в 10:31.


Отправлено: 10:18, 12-04-2017 | #37


Ветеран


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

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


mwz, а что не так с кавычками в set?
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:33, 12-04-2017 | #38

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата Iska:
а что не так с кавычками в set? »
Да вроде не по феншую... И при команде "Help set" в Win-7 не показывает возможности использования кавычек — т.е. не документировано.
Но может и отстал от жизни.

PS
А, увидел:

При использовании любых логических или двоичных операторов необходимо
заключить строку выражения в кавычки. Любые нечисловые строки в выражении
рассматриваются как имена переменных среды, значения которых преобразуются
в числовой вид перед использованием. Если переменная с указанным именем
не определена в системе, вместо нее подставляется нулевое значение
.

-------
Mikhail Zhilin


Последний раз редактировалось mwz, 12-04-2017 в 11:04.


Отправлено: 10:53, 12-04-2017 | #39


Новый участник


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

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


Рабочий вариант скрипта:
Код: Выделить весь код
set na=openvpn
set shl=
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: =%
set na=ethernet
set vhb=
for /f "delims=[]" %%b in ('ipconfig /all^|find /n "%nb%"') do set "nv=%%b"
for /f "tokens=2 delims=:" %%b in ('ipconfig /all^|more +%nv%^|find "Основной шлюз"') do if not defined shl set "vhb=%%b"
echo %vhb: =%
route delete 0.0.0.0 mask 0.0.0.0
route add -p %vhb% mask 255.255.255.255 %shl%
route add 0.0.0.0 mask 0.0.0.0 %shl%
pause
Траффик не будет идти напрямую в случае дисконнекта openvpn.
Спасибо всем за помощь.

Отправлено: 13:07, 12-04-2017 | #40



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 R2 - Основной шлюз aus Windows Server 2008/2008 R2 15 03-07-2013 13:37
Разное - Основной шлюз :S apk.apocalypses Сетевые технологии 2 22-02-2012 14:36
VPN S-T-S как основной шлюз Tele2 ISA Server / Microsoft Forefront TMG 5 19-08-2010 15:30
Основной шлюз wik7000 Microsoft Windows NT/2000/2003 11 17-11-2006 13:19




 
Переход