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

0

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

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

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

    
por Ville 10.01.2013 / 02:54

1 resposta

0

Você pode usar com facilidade o powershell :

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 o ROUTE PRINT em execução a partir de uma linha de comando do Windows. Powershell é uma linguagem de script detalhada, para que você possa atualizar facilmente o script de configuração do cliente openvpn, presumo que seja isso que você está tentando fazer. Também é baseado em objetos.

Eu faria algo assim:

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

2) Cada entrada da tabela de roteamento é uma entrada em uma matriz (portanto, 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 no arquivo de configuração do cliente OpenVPN (usando get-content no powershell irá criar uma matriz de string do arquivo)

6) Faça a iteração através do array de strings até encontrar a string que você deve substituir, então substitua a string e salve o arquivo.

Espero que isso indique você na direção certa.

    
por 11.01.2013 / 15:20