2010-07-21 06:06:13 +0000 2010-07-21 06:06:13 +0000
61
61

Comando Windows que retorna IP externo

Existe um comando pelo qual eu posso encontrar o meu IP externo do meu router ou do meu NAT\DSL Router, etc., eliminando a necessidade de visitar whatsmyip.net ou similar.

Respostas (13)

109
109
109
2014-02-27 14:57:47 +0000

Pode utilizar um pedido DNS em vez de um pedido HTTP para descobrir o seu IP público:

C:\> nslookup myip.opendns.com. resolver1.opendns.com

Utiliza o servidor resolver1.opendns.com dns para resolver o hostname mágico myip.opendns.com. para o seu endereço IP. (Nota: o . na pesquisa evita que os domínios de pesquisa sejam anexados, o que pode produzir resultados incorrectos)

versão Unix:

$ dig +short myip.opendns.com @resolver1.opendns.com
33
33
33
2010-07-21 08:24:26 +0000

pegue a sua própria cópia do curlf de http://curl.haxx.se/download.html e depois apenas

curl "http://myexternalip.com/raw"

ou utilize o powerhell:

$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")

(isenção de responsabilidade: http://myexternalip.com foi criado por mim)

16
16
16
2010-07-21 06:28:20 +0000

Não existe um comando incorporado para o fazer. Parte do problema é que quando está ligado à Internet através de um router, o seu hardware de rede não está directamente ligado à Internet, pelo que ao seu sistema não lhe é especificamente atribuído um IP. É possível que tenha até vários IPs externos em alguns casos se estiver atrás de um proxy reverso, uma vez que muitas redes empresariais estão configuradas. A sua melhor aposta pode ser a criação de um script que consulte whatismyip.org , ou tentar descobrir se já existe um.

(Como dica, whatismyip.org é preferível à maioria das outras soluções, uma vez que apenas devolve o seu IP como texto simples - sem texto supérfluo, links, imagens ou outro lixo. Seria muito mais fácil de usar num script personalizado do que a maioria dos outros sites de detecção de IP).

7
7
7
2015-04-23 08:25:29 +0000

Isto funciona bem, utilizo-o principalmente com psexec quando inspecciono as ligações dos computadores clientes.

nslookup myip.opendns.com resolver1.opendns.com
6
6
6
2011-02-12 01:58:08 +0000

Criar um ficheiro com o nome ip.vbs e copiar nele o seguinte:

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

Executar usando

C:\>cscript ip.vbs

Como nhinkle notou , é melhor escolher um site que apenas devolva o IP e não HTML + anúncios, etc. como:

(fonte: anteriormente http://externip.com/about )

5
5
5
2014-02-16 13:34:55 +0000

Com Powershell 3.0 (Windows 7 padrão é 2.0) você pode usar Invoke-WebRequest

** Para IPv4:**

$tmp =Invoke-WebRequest -URI http://myip.dnsomatic.com/
$tmp.Content

** Para IPv6:**

$tmp =Invoke-WebRequest -URI http://myexternalip.com/raw
$tmp.Content

Isto lhe dará uma variável para trabalhar se você tem algo específico que você quer fazer com ela. Na verdade estou a usar isto para construir um script para carregar o IP dinâmico do meu router periodicamente, ter outra comunicação de teste da máquina a intervalos regulares, e depois actualizar o DNS com o último IP se este tiver mudado para que eu possa aceder ao meu equipamento a partir de qualquer lugar usando um nome em vez de ter de perseguir constantemente o IP.

E claro - à medida que os sítios mudam ou as suas saídas mudam, vai querer actualizar isto em conformidade. :)

5
5
5
2011-02-12 04:03:59 +0000

Fiz este script batch para fazer isso há alguns meses:

@echo off

:: WhatIsMyIP.cmd - returns public IP address
:: requires: wget.exe

if [%1]==[-h] goto :HELP
if [%1]==[--help] goto :HELP
if [%1]==[/?] goto :HELP

wget -q -O %temp%\MyIP http://www.whatismyip.com/automation/n09230945.asp
for /f "delims= " %%G in (%temp%\myip) do set PublicIP=%%G & del %temp%\MyIP
echo. & echo Your public IP address is %PublicIP% & echo.
if [%1]==[--clip] echo %PublicIP% | clip
goto :EOF

:HELP
echo. & echo Usage: whatismyip [--clip] & echo.
goto :EOF

:EOF

Dá-lhe a opção de colocar o endereço IP na área de transferência e define uma variável ambiental - %PublicIP%.


MÉTODO SIMPLER:

Agora, eu apenas faço isto:

curl icanhazip.com

ou…

curl icanhazip.com | clip

…para obter o endereço IP público actual na área de transferência.

Você precisa de cURL .

3
3
3
2014-01-15 00:48:54 +0000

Sem programas de terceiros é difícil no Windows porque o Telnet não é fornecido por defeito, mas se estiver lá (XP) ou ligado (Windows Vista e superior), basta escrever:

telnet curlmyip.com 80

o ecrã irá piscar, e irá apenas obter um cursor… Depois digite:

GET

Em letras maiúsculas… verá os cabeçalhos, seguidos do seu ip (e desculpe-me por o ter esborratado, só para mostrar onde estaria! ):

Outras respostas aqui obviamente funcionam, mas, estou tentando manter a pergunta sobre algo que pode ser usado em qualquer janela, sem programas de terceiros!

Para Windows Vista e superior, você pode instalar telnet facilmente (e com segurança) através do Programs and features, ou usar o seguinte comando:

pkgmgr /iu:”TelnetClient”
3
3
3
2013-12-05 15:40:30 +0000

Experimente isto: Não necessita de nenhum tipo de software externo instalado.

@set @script=0 /*
  @echo off
    set @script=
    cscript //nologo //e:jscript "%~dpnx0"
  exit /b
*/

with (new ActiveXObject('Microsoft.XMLHTTP')) {
   open('GET', 'http://internet.yandex.ru/', false);
   send();

   WScript.echo(responseText.match(/IPv4:\s(\d+\.){3}\d+/g));
}
2
2
2
2014-11-28 11:40:53 +0000

Pode usar ifcfg.me . suporta alguns comandos internos que vêm com o windows por defeito.

curl ifcfg.me
nslookup . ifcfg.me
telnet ifcfg.me
ftp ifcfg.me
finger @ifcfg.me
1
1
1
2015-10-07 22:09:34 +0000

Eu queria ter uma solução que funcionasse para Windows* sem instalar ferramentas de terceiros. Por isso, tomei a opção powershell*, que deve executar um script de hora a hora.

Cria-se este script com o Notepad

$wc = new-object System.Net.WebClient
$ip = $wc.DownloadString("http://myexternalip.com/raw")
$LogTime = Get-Date -Format "MM-dd-yyyy_hh-mm-ss"
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt $LogTime
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt "`n"
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt $ip
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt "`n"

e guarda-se como getIP.ps1 algures. Pode chamar este script directamente em powerhell ou usar o planificador de tarefas como eu fiz. Este é o comando para executar:

powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1

No planificador de tarefas cria uma nova tarefa. Em Trigger utiliza a opção diaily para cada 1 dia e na opção advanced escolhe pery hour for the duration of immediately. Verifique também Executar tarefa logo que possível após um início agendado nas Configurações. Em *Acção** cola o código de execução acima.

O código de powershell pode ser optimizado, porque eu não sou um guru powershell (a minha primeira vez com ele). Agora estou testando se o script é chamado a cada hora.

1
1
1
2015-03-22 15:25:28 +0000

Eis o que descobri, é possível utilizar o comando incorporado para obter o endereço IP público, mas tem acesso à Internet

telnet icanhazip.com

ou

telnet myip.gelma.net
0
0
0
2018-11-08 19:54:03 +0000

ipchicken.com irá devolver o seu endereço IP aparente em formato texto se conseguir analisar o HTML de retorno que extrai o IP externo do seu router. Alternativamente pode instalar um desses agentes DNS dinâmicos que actualiza o seu IP externo aparente para um FQDN e depois basta fazer nslookup no seu FQDN para ver o seu número IP actual. Antigamente havia outros gratuitos como o DynDNS, mas a maioria deles requer agora uma conta de subscrição paga.