Como obter meu endereço IP externo (sobre NAT) na linha de comando do Windows? [duplicado]

13

O comando "ipconfig" do Windows pode me mostrar apenas os parâmetros das interfaces Ethernet da minha máquina (mesmo com o ipconfig /allargumento). Ele pode mostrar informações detalhadas sobre a interface, mas nunca me mostrará meu endereço IP externo em uma rede NAT .

ipconfig / all - captura de tela do Windows

No entanto, existem vários sites, como "Qual é o meu endereço IP", que podem obter e mostrar meu endereço IP externo. Então, eu estou me perguntando, se é possível obter esse valor externamente? Devo esperar que exista alguma maneira de obter essas informações em uma linha de comando na minha máquina local ...

Preciso obter esse valor para fazer logon em um aplicativo que estou fazendo com o VBScript . Existe uma maneira de fazer isso, de um cmdno Windows?

Diogo
fonte
Observe que os serviços what-is-my-IP baseados em HTTP podem fornecer o IP de um servidor proxy. (E antes de pontos ninguém de fora que existem HTTPS proxies, você pode não transparente do proxy HTTPS Se você tem um, você sabe disso..)
billpg

Respostas:

11

Agora, usando o site fornecido por Oliver, isso pode ser feito no VBScript.

Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://ifconfig.me/ip", False
o.send
WScript.StdOut.Write o.responseText

Existe um método semelhante para o PowerShell.

Prumo
fonte
Bom, funcionou. Vou inseri-lo no meu programa. É uma boa solução para o meu problema. Obrigado.
Diogo
Hmm, está retornando um "Acesso negado" na linha 4, caractere 1 para este script. Mesmo executando-o a partir de uma linha de comando de direitos de administrador ... Você sabe por quê?
Diogo
@DiogoRocha Não sei por quê. O de Fiasco é provavelmente mais confiável. Também é possível que você tenha um firewall ou algo bloqueando o acesso à Internet em wscript/ cscript.
27412 Bob
10

O problema é que não é o seu endereço IP. É o endereço IP do seu roteador.

Portanto, você nunca poderá recuperá-lo sem passar pelo roteador. E a maneira mais fácil é simplesmente fazer o roteador recuperar um site para você (como você já percebeu). Porque o roteador usará seu endereço IP para recuperar esse site.

Dito isto, você pode facilitar as coisas usando ifconfig.me/ip . Agora, se você tiver curl, já está pronto, se não: Wget / cURL alternativo nativo ao Windows?

Der Hochstapler
fonte
1
O carregamento do ifconfig.me/ip demorou muito tempo. whatismyip.org fornece um IP de texto simples idêntico e foi muito mais rápido.
Nhinkle
1
@ nhinkle Isso pode depender da sua localização, no entanto. Ambos parecem ter o mesmo tempo de carregamento para mim, mas o tempo de resposta do ping do ifconfig.me é metade (139ms vs 250ms). O que provavelmente é mais importante é que o serviço permaneça ativo o máximo de tempo possível, mas realmente não temos como saber.
27412 Bob
Não há nada errado com os endereços IP externos do meu roteador, considerando as regras de encaminhamento de portas e o IPv4.
mbx 07/05
5

Crie um script VB para executar à sua vontade.

Digite isso em um arquivo txt:

Option Explicit
Dim http : Set http = CreateObject( "MSXML2.ServerXmlHttp" )
http.Open "GET", "http://icanhazip.com", False
http.Send
Wscript.Echo http.responseText   'or do whatever you want with it
Set http = Nothing

Feche o arquivo txt e renomeie-o para ip.vbs (salve-o em C: neste exemplo)

No windows abra uma janela dos (execute cmd) ( ha! Acabei de perceber se você trocar que se torna run dmc !! )

Verifique se você está em c: / (caso contrário, digite c: e pressione enter e, em seguida, cd .. & digite algumas vezes até ver C:>)

No prompt dos, digite:

cscript ip.vbs

e você verá instantaneamente seu IP externo.

Se você colocar o arquivo vbs em uma chave USB ou algo assim (e lembre-se de executar o cscript ip.vbs no prompt dos - mas verifique se você está no mesmo diretório que o arquivo ip.vbs), pode levar isso com você em qualquer lugar que você vá e execute o arquivo .vbs em qualquer computador para ver seu IP externo.

Outra observação, a linha que tem o endereço para icanhazip.com pode ser alterada para qualquer um dos seguintes:

http://myip.dnsomatic.com
http://whatismyip.org
http://icanhazip.com
http://www.whatismyip.com/automation/n09230945.asp
http://externip.com

Editar, você também pode executar o arquivo ip.vbs no Windows sem precisar ir para uma janela do DOS e ele aparecerá em uma pequena janela pop-up.

Campeão
fonte
O icanhazip.com tem um tempo de resposta muito curto, melhor do que o ipconfig.me/ip aqui no centro da Europa.
Martin Braun
3

Para obter um endereço IP externo, é necessário solicitar algo fora da rede e informar o que seu endereço IP "parece" ser para ele. Isso pode ser feito através de scripts, consultando uma página fácil de analisar o resultado e obtendo o endereço IP a partir disso, mas não há nenhuma ferramenta integrada no Windows que você possa apenas dizer qual é o seu endereço IP externo. Você precisará escrever um ou encontrar um e fazer o download.

Scott Chamberlain
fonte
2

Usando algo como o DynDNS para atribuir um nome de domínio ao seu endereço IP DHCP, você pode executar um nslookupde ou fazer ping (se o roteador estiver configurado para responder), seu nome de domínio e extrair o endereço IP a partir dele.

O único outro utilitário do Windows é traceroute, mas mostraria apenas o gateway de saída ao qual você se conecta, não o endereço IP do seu roteador que está se conectando a esse gateway.

Edit: Como é necessário um pouco de análise no item acima para extrair a sequência de endereços IP e ifconfig.meter uma boa resposta escassa, aqui está uma variante do script de Bob, a função pode testar a ausência de resposta e devolver um bom IP limpo endereço para uso em um script se o servidor estiver ativo.

wscript.echo WAN_IP()

function WAN_IP()
    set obj = createobject("Microsoft.XMLHTTP")
    call obj.open("get", "http://ifconfig.me/ip", false)
    obj.send()

    strresponse = obj.responsetext
    set obj = nothing

    if strresponse <> "" then
        strIP = strresponse
    else
        strIP = "Unavailable"
    end if

    WAN_IP = trim(strIP)

end function
Fiasco Labs
fonte
1

Se o seu roteador suportar Plug & Play Universal (UPnP), você poderá consultar o (s) endereço (s) IP (s).

No Windows, você pode consultar essas informações usando o WMI e na linha de comando usando a ferramenta WMIC.

Robert
fonte
2
Você poderia dar um exemplo? Eu ficaria muito interessado nisso.
Der Hochstapler 26/03
1

Como outros já disseram, você precisa contar com um serviço externo. Eu recomendo http://www.externalip.net

Você pode usar http://api.externalip.net/ip para obter o ip em formato de texto simples. Ele provou ser rápido e confiável, além de ter uso ilimitado.


fonte