Existe um comando pelo qual posso encontrar meu IP externo do meu roteador ou do meu roteador NAT \ DSL, etc., eliminando a necessidade de visitar o whatsmyip.net ou similar.
Existe um comando pelo qual posso encontrar meu IP externo do meu roteador ou do meu roteador NAT \ DSL, etc., eliminando a necessidade de visitar o whatsmyip.net ou similar.
Respostas:
Não há nenhum comando interno para fazer isso. Parte do problema é que, quando você está conectado à Internet através de um roteador, o hardware da sua rede não está diretamente conectado à Internet; portanto, seu sistema não recebe um IP específico. É possível que você possa ter vários IPs externos em alguns casos, se estiver atrás de um proxy reverso, pois muitas redes corporativas estão configuradas. Sua melhor aposta pode ser criar um script que consulta whatismyip.org ou tentar descobrir se já existe.
(Como uma dica, o whatismyip.org é preferível à maioria das outras soluções, pois apenas retorna seu IP como texto sem formatação - sem texto supérfluo, links, imagens ou outro lixo. Seria muito mais fácil usar em um script personalizado do que a maioria dos os outros sites de detecção de IP.)
Você pode usar uma solicitação DNS em vez de HTTP para descobrir seu IP público:
C:\> nslookup myip.opendns.com. resolver1.opendns.com
Ele usa o resolver1.opendns.com
servidor DNS para resolver o myip.opendns.com.
nome do host mágico para o seu endereço IP. (Observação: o rastreamento .
da pesquisa impede que os domínios de pesquisa sejam anexados, o que pode gerar resultados incorretos.)
Versão Unix:
$ dig +short myip.opendns.com @resolver1.opendns.com
pegue sua própria cópia curl
em http://curl.haxx.se/download.html e depois apenas
curl "http://myexternalip.com/raw"
ou use o PowerShell:
$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")
(aviso: http://myexternalip.com foi criado por mim)
Isso funciona muito bem, eu o uso principalmente com psexec ao inspecionar conexões de computadores clientes.
nslookup myip.opendns.com resolver1.opendns.com
Crie um arquivo nomeado ip.vbs
e copie o seguinte para ele:
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 observou , é melhor escolher um site que retorne apenas o IP e não anúncios HTML + etc., como:
(fonte: anteriormente http://externip.com/about )
Eu fiz esse script em lote 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
Oferece a opção de colocar o endereço IP na área de transferência e define uma variável ambiental - %PublicIP%
.
MÉTODO MAIS SIMPLES:
Agora, basta fazer isso:
curl icanhazip.com
ou...
curl icanhazip.com | clip
... para obter o endereço IP público atual na área de transferência.
Você precisa de cURL .
Com o Powershell 3.0 (o padrão do Windows 7 é 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
Isso fornecerá uma variável para trabalhar se você tiver algo específico que deseja fazer com ela. Na verdade, estou usando isso para criar um script para fazer upload periódico do IP dinâmico do meu roteador, ter outra máquina testando a comunicação em intervalos regulares e, em seguida, atualizar o DNS com o IP mais recente, se ele tiver sido alterado, para que eu possa acessar meu equipamento de qualquer lugar usando um nome em vez de precisar procurar constantemente o IP.
E, é claro - à medida que os sites mudam ou suas saídas mudam, você deve atualizar isso de acordo. :)
powershell.exe -noprofile -command ""
. Separe a linha-break com um ponto e vírgula ...
(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
Tente o seguinte:
Não precisa 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));
}
Sem programas de terceiros, o Telnet não é fornecido por padrão, mas, se estiver lá (XP) ou ativado (Windows Vista e superior), basta digitar:
telnet curlmyip.com 80
a tela piscará e você receberá um cursor ... Próximo tipo:
GET
Em letras maiúsculas ... você verá os cabeçalhos, seguidos pelo seu ip (e desculpe, eu o desfoquei, apenas mostrando onde seria!):
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 o Windows Vista e superior, você pode instalar o telnet facilmente (e com segurança) Programs and features
ou usar o seguinte comando:
pkgmgr /iu:”TelnetClient”
curlmyip.com
, mas testado trabalhando com checkip.dyndns.org
.
Eu queria ter uma solução que funcione para o Windows sem instalar ferramentas de terceiros. Então, eu peguei a opção PowerShell , que deve executar um script a cada hora.
Você cria esse script com o bloco de notas
$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 salve como em getIP.ps1
algum lugar. Você pode chamar esse script diretamente no PowerShell ou usar o planejador de tarefas como eu fiz. Este é o comando para executar:
powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1
No agendador de tarefas, você cria uma nova tarefa. No Trigger, você usa a configuração diariamente a cada 1 dia e, na opção avançada, escolhe a cada hora pela duração imediata . Verifique também Executar tarefa o mais rápido possível, depois que um início agendado for perdido nas Configurações . Em Ação, cole o código de execução acima.
O código do PowerShell pode ser otimizado, porque não sou um guru do PowerShell (minha primeira vez com ele). Agora estou testando se o script é chamado a cada hora.
ipchicken.com retornará seu endereço IP aparente em formato de texto se você puder analisar o HTML de retorno extraído do IP externo do roteador. Como alternativa, você pode instalar um desses agentes DNS dinâmicos que atualiza seu IP externo aparente para um FQDN e, em seguida, basta pesquisar no FQDN para ver seu número de IP atual. Costumava haver grátis como o DynDNS, mas a maioria deles agora exige uma conta de assinatura paga.