Comando de Windows que devuelve IP externa
¿Existe un comando por el cual pueda encontrar la IP externa de mi router o mi router NAT\DSL, etc., eliminando la necesidad de visitar whatsmyip.net o similar.
¿Existe un comando por el cual pueda encontrar la IP externa de mi router o mi router NAT\DSL, etc., eliminando la necesidad de visitar whatsmyip.net o similar.
Podrías usar una petición DNS en lugar de una petición HTTP para averiguar tu IP pública:
C:\> nslookup myip.opendns.com. resolver1.opendns.com
Utiliza el servidor dns resolver1.opendns.com
para resolver el mágico nombre de host myip.opendns.com.
a tu dirección IP. (Nota: el seguimiento de .
en la búsqueda evita que se añadan dominios de búsqueda, lo que puede dar resultados incorrectos).
Versión Unix:
$ dig +short myip.opendns.com @resolver1.opendns.com
agarra tu propia copia de curl
de http://curl.haxx.se/download.html y luego solo
curl "http://myexternalip.com/raw"
o usa powershell:
$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")
(descargo de responsabilidad: http://myexternalip.com fue creado por mí)
No hay un comando incorporado para hacer esto. Parte del problema es que cuando estás conectado a Internet a través de un enrutador, tu hardware de red no está directamente conectado a Internet, por lo que tu sistema no tiene asignada específicamente una IP. Es posible que incluso tengas varias IP externas en algunos casos si estás detrás de un proxy inverso, ya que muchas redes corporativas están configuradas. Su mejor apuesta podría ser crear un script que consulte whatismyip.org , o tratar de encontrar si ya existe uno.
(Como consejo, whatismyip.org es preferible a la mayoría de las otras soluciones, ya que sólo devuelve su IP como texto plano - sin texto superfluo, enlaces, imágenes u otra basura. Sería mucho más fácil de usar en un script personalizado que la mayoría de los otros sitios de detección de IP).
Esto funciona bien, lo uso mayormente con psexec cuando inspecciono las conexiones del ordenador del cliente.
nslookup myip.opendns.com resolver1.opendns.com
Crear un archivo llamado ip.vbs
y copiar lo siguiente en él:
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
Ejecutar usando
C:\>cscript ip.vbs
Como nhinkle notado , es mejor elegir un sitio que sólo devuelva la IP y no el HTML + anuncios, etc. como:
(fuente: antes http://externip.com/about )
Con Powershell 3.0 (el valor por defecto de Windows 7 es 2.0) puedes 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
Esto te dará una variable con la que trabajar si tienes algo específico que quieras hacer con ella. En realidad estoy usando esto para construir un script para subir la IP dinámica de mi enrutador periódicamente, tener otra comunicación de prueba de la máquina a intervalos regulares, y luego actualizar el DNS con la última IP si ha cambiado para que pueda acceder a mi equipo desde cualquier lugar usando un nombre en lugar de tener que perseguir constantemente la IP.
Y por supuesto - a medida que los sitios cambian o sus salidas cambian querrás actualizar esto en consecuencia. :)
Hice este script por lotes para hacer eso hace unos 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
Te da la opción de poner la dirección IP en el portapapeles y establece una variable de entorno - %PublicIP%
.
Método simplificador:
Ahora, sólo hago esto en su lugar:
curl icanhazip.com
o…
curl icanhazip.com | clip
…para poner la dirección IP pública actual en el portapapeles.
Necesitas cURL .
Sin programas de terceros es difícil en Windows ya que Telnet no se suministra por defecto, pero, si está ahí (XP) o activado (Windows Vista y superior), simplemente teclea:
telnet curlmyip.com 80
la pantalla parpadeará, y sólo obtendrás un cursor… Siguiente tipo:
GET
En mayúsculas… entonces verás los encabezados, seguidos de tu ip (y lo siento, lo he borrado, ¡sólo mostrando dónde estaría! ):
Otras respuestas aquí obviamente funcionan, pero, ¡estoy tratando de mantener la pregunta sobre algo que puede ser usado en cualquier ventana, sin programas de terceros!
Para Windows Vista y superior, puedes instalar telnet fácilmente (y con seguridad) a través de Programs and features
, o usar el siguiente comando:
pkgmgr /iu:”TelnetClient”
Prueba esto: No necesita ningún 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));
}
Quería tener una solución que funcionara para Windows sin instalar herramientas de terceros. Así que tomé la opción powershell, que debería ejecutar un script cada hora.
Creas este script con el Bloc 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"
y lo guardas como getIP.ps1
en algún lugar. Puede llamar a este script directamente en powershell o usar el planificador de tareas como yo lo hice. Este es el comando para ejecutar:
powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1
En el planificador de tareas se crea una nueva tarea. En Trigger usas el ajuste diario para cada 1 día y en la opción avanzada eliges cada hora para la duración de inmediato. También comprueba Ejecutar la tarea tan pronto como sea posible después de que se pierda un inicio programado en el Configuración. En Acción se pega el código de ejecución anterior.
El código de powershell puede ser optimizado, porque no soy un gurú de powershell (mi primera vez con él). Ahora estoy probando si el script es llamado cada hora.
ipchicken.com devolverá su aparente dirección IP en formato de texto si puede analizar el HTML de retorno que extrae la IP externa de su router. Alternativamente puedes instalar uno de esos agentes DNS dinámicos que actualizan tu aparente IP externa a un FQDN y luego simplemente hacer nslookup en tu FQDN para ver tu número de IP actual. Solía haber gratuitos como DynDNS pero la mayoría de ellos ahora requieren una cuenta de suscripción de pago.