1

Мне нужно найти шлюз по умолчанию в сценарии openvpn, где вывод маршрута выглядит так:

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0       10.49.73.1      10.49.73.24     10
          0.0.0.0        128.0.0.0         10.8.0.1         10.8.0.2     30

Поэтому я гугл вокруг немного и нашел этот сценарий здесь:

@For /f "tokens=3" %%* in (
   'route.exe print ^|findstr "\<0.0.0.0\>"'
   ) Do @Set "DefaultGateway=%%*"

echo %DefaultGateway%

Это работает, но соответствует обеим линиям в выводе маршрута.

Но мне нужно найти эту строку:

0.0.0.0          0.0.0.0       10.49.73.1      10.49.73.24     10

Поэтому я попытался изменить параметр findstr следующим образом:

findstr "\<0.0.0.0\>.\<0.0.0.0\>"

в ожидании, что "." будет соответствовать вкладке между столбцами. Но это не так. Это все еще установит DefaultGateway к 10.8.0.1

Я не мог найти ключ в документации MS тоже. Может кто знает правильное выражение? Большое спасибо.

1 ответ1

0

Попробуй это:

For /f "tokens=3" %%* in (
   'route print ^|findstr "\<0.0.0.0.*0.0.0.0\>"'
   ) Do @Set "DefaultGateway=%%*"

echo %DefaultGateway%

А вы можете проверить findstr /? для получения дополнительной информации.

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