Como obter o gateway para uma rota específica na linha de comando do Windows?

Como obter o gateway para uma rota específica na linha de comando do Windows?

Existe uma maneira de imprimir o gateway para uma rota específica (não interface) no Windows (neste caso, Win7)? Eu precisaria adicionar uma rota dinamicamente em um script OpenVPN _up, mas como o gateway é atribuído dinamicamente quando a conexão é formada, não posso criar scripts estaticamente.

Também parece haver algumas variáveis ​​de ambiente (route_vpn_gateway?) disponíveis para os scripts _up, mas não consegui fazê-las funcionar.

Suponho que posso usar o awk/grep das ferramentas GnuWin e analisar a saída de 'rotas', mas talvez haja uma maneira mais limpa/fácil?

Responder1

Você pode usar facilmentePowershell:

PS C:\Users\mmoor> $RouteTable = Get-WmiObject Win32_IP4RouteTable
PS C:\Users\mmoor> $RouteTable[0].Mask
0.0.0.0
PS C:\Users\mmoor> $RouteTable[0].Destination
0.0.0.0
PS C:\Users\mmoor> $RouteTable[0].NextHop
<Gateway Address>

Compare isso com a execução do ROUTE PRINT a partir de uma linha de comando do Windows. Powershell é uma linguagem de script detalhada, então você pode atualizar facilmente o script de configuração do cliente openvpn, presumo que é isso que você está tentando fazer. Também é baseado em orientação a objetos.

Eu faria algo da seguinte forma:

1) Pegue a tabela de roteamento do wmi (mostrada acima)

2) Cada entrada da tabela de roteamento é uma entrada em uma matriz (daí o [0] após a variável acima)

3) Faça um foreach no array até encontrar o endereço IP que você está procurando

4) Obtenha o membro NextHop da entrada RouteTable e armazene-o

5) Leia o arquivo de configuração do cliente OpenVPN (usar get-content no PowerShell criará uma matriz de strings do arquivo)

6) Itere pela matriz de strings até encontrar a string que você deve substituir, depois substitua a string e salve o arquivo.

Espero que isso indique a direção certa.

informação relacionada