encontrando o IP de origem de uma estação de trabalho

0

Eu quero determinar qual é o IP de origem principal em uma estação de trabalho (usado quando a conexão passa pelo gateway padrão)

Existem muitos IPs / interfaces em uma estação de trabalho (muitas sub-redes privadas, caixa virtual, cujo script deve ser ignorado).

Eu encontrei% computername%, mas não é confiável porque muitas vezes retorna IP privado da rede virtualbox.

Eu estava pensando em encontrá-lo em "route PRINT"

for /f "tokens=4" %%a in ('route PRINT -4 ^| findstr 0.0.0.0') do set _IPaddr=%%a
echo IP is: %_IPaddr%

mas o "findstr 0.0.0.0" também retorna outras rotas:

>route PRINT -4 | findstr /s /i /m 0.0.0.0
          0.0.0.0          0.0.0.0      10.170.44.1    10.170.44.150      2
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    331
        224.0.0.0        240.0.0.0         On-link     192.168.177.1    281
        224.0.0.0        240.0.0.0         On-link     192.168.137.1    311
        224.0.0.0        240.0.0.0         On-link     10.170.44.150    257

como dizer ao findstr para retornar apenas a primeira linha que começa com espaços em branco e, em seguida, 0.0.0.0? (linha de rota padrão)?

    
por Chris 12.06.2018 / 12:16

1 resposta

2

Em primeiro lugar, você tem alguns argumentos supérfluos:

  • /s é para pesquisar dirs e subdiretórios
  • /i é para maiúsculas e minúsculas, o que não faz sentido ao procurar números

Isso deve fazer o que você quer:

route PRINT -4 | findstr /c:" 0.0.0.0"

O /c diz a findstr para procurar a string subseqüente literalmente, ou seja, evitando que ela tire o espaço inicial.

Como alternativa, você pode apenas usar route para fazer um pouco mais do trabalho para você:

route PRINT 0.0.0.0 | findstr "0.0.0.0"

    
por 12.06.2018 / 12:43