¿Existe un comando mediante el cual pueda encontrar mi IP externa de mi enrutador o mi enrutador NAT \ DSL, etc., eliminando la necesidad de visitar whatsmyip.net o similar?
¿Existe un comando mediante el cual pueda encontrar mi IP externa de mi enrutador o mi enrutador NAT \ DSL, etc., eliminando la necesidad de visitar whatsmyip.net o similar?
Respuestas:
No hay un comando incorporado para hacer esto. Parte del problema es que cuando está conectado a Internet a través de un enrutador, el hardware de su red no está directamente conectado a Internet, por lo que su sistema no tiene una IP asignada específicamente. Es posible que incluso tenga varias IP externas en algunos casos si está detrás de un proxy inverso, ya que muchas redes corporativas están configuradas. Su mejor opción podría ser crear un script que pregunte whatismyip.org , o tratar de encontrar si ya existe.
(Como consejo, whatismyip.org es preferible a la mayoría de las otras soluciones, ya que solo devuelve su IP como texto sin formato, 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.)
Puede usar una solicitud DNS en lugar de una solicitud HTTP para averiguar su IP pública:
C:\> nslookup myip.opendns.com. resolver1.opendns.com
Utiliza el resolver1.opendns.com
servidor dns para resolver el myip.opendns.com.
nombre de host mágico en su dirección IP. (Nota: el seguimiento .
de la búsqueda evita que se agreguen dominios de búsqueda, lo que puede producir resultados incorrectos).
Versión Unix:
$ dig +short myip.opendns.com @resolver1.opendns.com
apoderarse de su propia copia de curl
de http://curl.haxx.se/download.html y luego simplemente
curl "http://myexternalip.com/raw"
o use powershell:
$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")
(descargo de responsabilidad: http://myexternalip.com fue creado por mí)
Esto funciona bien, lo uso principalmente con psexec cuando inspecciono las conexiones de la computadora cliente.
nslookup myip.opendns.com resolver1.opendns.com
Cree un archivo llamado ip.vbs
y copie 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 señaló nhinkle , es mejor elegir un sitio que solo devuelva la IP y no los anuncios HTML +, etc., como:
(fuente: anteriormente http://externip.com/about )
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
Le da la opción de poner la dirección IP en el portapapeles y establece una variable ambiental - %PublicIP%
.
MÉTODO MÁS SIMPLE:
Ahora, solo hago esto en su lugar:
curl icanhazip.com
o...
curl icanhazip.com | clip
... para obtener la dirección IP pública actual en el portapapeles.
Necesitas cURL .
Con Powershell 3.0 (Windows 7 predeterminado es 2.0) puede 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 le dará una variable para trabajar si tiene algo específico que desea hacer con él. De hecho, estoy usando esto para crear un script para cargar periódicamente la IP dinámica de mi enrutador, hacer que otra máquina pruebe la comunicación a intervalos regulares y luego actualice DNS con la última IP si ha cambiado para poder 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 cambien los sitios o cambien sus resultados, querrá actualizar esto en consecuencia. :)
powershell.exe -noprofile -command ""
. Separe el salto de línea con un punto y coma ...
(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
Pruebe 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));
}
Sin programas de terceros es difícil en Windows, ya que Telnet no se suministra de forma predeterminada, pero, si está allí (XP) o encendido (Windows Vista y superior), simplemente escriba:
telnet curlmyip.com 80
la pantalla parpadeará y obtendrá un cursor ... Siguiente tipo:
GET
En mayúsculas ... verá los encabezados, seguidos de su dirección IP (y lo siento, lo borré, ¡solo muestra dónde estaría!):
Otras respuestas aquí obviamente funcionan, pero, ¡estoy tratando de mantener la pregunta sobre algo que se pueda usar en cualquier ventana, sin programas de terceros!
Para Windows Vista y superior, puede instalar telnet fácilmente (y de forma segura) a través de Programs and features
, o usar el siguiente comando:
pkgmgr /iu:”TelnetClient”
curlmyip.com
, pero probado trabajando con checkip.dyndns.org
.
Quería tener una solución que funcione para Windows sin instalar herramientas de terceros. Así que tomé la opción de PowerShell , que debería ejecutar un script cada hora.
Crea 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 guardarlo como en getIP.ps1
algún lugar. Puede llamar a este script directamente en powershell o usar el planeador de tareas como lo hice. Este es el comando para ejecutar:
powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1
En el programador de tareas, crea una nueva tarea. En Trigger , usa la configuración todos los días por 1 día y, en la opción avanzada, elige cada hora de forma inmediata . También marque Ejecutar tarea lo antes posible después de que se pierda un inicio programado en la Configuración . En Acción , pega el código de ejecución anterior.
El código de PowerShell se puede optimizar, porque no soy un gurú de PowerShell (mi primera vez con él). Ahora estoy probando si el script se llama cada hora.
Esto es lo que descubrí, es posible usar el comando incorporado para obtener una dirección IP pública, pero usted tiene acceso a Internet
telnet icanhazip.com
o
telnet myip.gelma.net
icanhazip.com
no funcionará para mí y el otro no hace IPv6 correctamente. :)
ipchicken.com le devolverá su dirección IP aparente en formato de texto si puede analizar el HTML devuelto que extrae la IP externa de su enrutador. Alternativamente, puede instalar uno de esos agentes DNS dinámicos que actualiza su IP externa aparente a un FQDN y luego simplemente hacer una búsqueda en su FQDN para ver su número de IP actual. Solía haber otros gratuitos como DynDNS, pero la mayoría de ellos ahora requieren una cuenta de suscripción paga.