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.
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.
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
pegue a sua própria cópia do curl
f 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)
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).
Isto funciona bem, utilizo-o principalmente com psexec quando inspecciono as ligações dos computadores clientes.
nslookup myip.opendns.com resolver1.opendns.com
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 )
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. :)
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 .
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”
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));
}
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.
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.