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

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.

Respuestas (13)

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

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
33
33
33
2010-07-21 08:24:26 +0000

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í)

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

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).

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

Esto funciona bien, lo uso mayormente con psexec cuando inspecciono las conexiones del ordenador del cliente.

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

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 )

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

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. :)

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

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 .

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

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”
3
3
3
2013-12-05 15:40:30 +0000

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));
}
2
2
2
2014-11-28 11:40:53 +0000

Puedes usar ifcfg.me . soporta algunos comandos internos que vienen con windows por defecto.

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

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.

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

Esto es lo que descubrí, es posible usar el comando incorporado para obtener una dirección IP pública, pero tienes acceso a Internet…

0
0
0
2018-11-08 19:54:03 +0000

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.