4

Это способ, которым многие из нас устанавливают маршрут на окнах:

route add 10.10.0.0 mask 255.255.0.0 10.77.77.1 if 58 -p

В командной строке 58 указывается индекс интерфейса (IF), и большую часть времени его значение является постоянным для конкретной сетевой интерфейсной карты. Таким образом, можно создать командный файл CMD для автоматизации удаления и повторной настройки всех маршрутов, которые ей нужны.

Однако в моем случае у меня есть сетевой адаптер Gigabit Ethernet с двумя портами USB 3.0, и его IF меняются каждый раз, когда я подключаюсь к USB-порту моего ноутбука. Что я делаю, просто открываю оболочку cmd, получаю текущие идентификаторы интерфейса, давая печать маршрута, затем открываю командный файл CMD с помощью текстового редактора и изменяю все старые значения IF (ex: 58), сохраняю и закрываю и, наконец, запускаю CMD командный файл на оболочке.

Если есть способ установить маршрут только, зная MAC-адрес, не зависящий от IF - тогда проблема решена :) Решением может быть простая однострочная команда CMD (установить маршрут по MAC) или, может быть, сначала получить IF по MAC и установить маршрут по IF (установить маршрут по IF из MAC).

Любая помощь высоко ценится!

1 ответ1

2

Следующий фрагмент кода показывает, как получить IF по MAC- адресу с использованием цикла FOR /F результата WMIC (команда инструментария управления Windows):

@ECHO OFF
SETLOCAL EnableExtensions DisableDelayedExpansion

set "_maca=AA:AA:AA:AA:AA:AA"            change to match your circumstances
set "_geta=InterfaceIndex^, MACAddress"    to keep next lines in reasonable length
set "_ifin="                               to ensure that `_ifin` variable is empty

for /F "tokens=1,*" %%G in ('
    WMIC NIC where "MACAddress='%_maca%'" get %_geta% 2^>NUL ^| find ":"
                            ') do set "_ifin=%%~G"

if defined _ifin (
        rem route command block here:
    route add 10.10.0.0 mask 255.255.0.0 10.77.77.1 if %_ifin% -p
) else (
    echo %_maca%: No Instance^(s^) Available.
)

Ресурсы (требуется чтение):

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .