Esiste un comando tramite il quale posso trovare il mio IP esterno del mio router o il mio router NAT \ DSL, ecc., Eliminando la necessità di visitare whatsmyip.net o simili.
Esiste un comando tramite il quale posso trovare il mio IP esterno del mio router o il mio router NAT \ DSL, ecc., Eliminando la necessità di visitare whatsmyip.net o simili.
Risposte:
Non esiste un comando integrato per farlo. Parte del problema è che quando si è connessi a Internet tramite un router, l'hardware di rete non è direttamente collegato a Internet, quindi al sistema non è stato assegnato un IP specifico. È possibile che tu abbia anche più IP esterni in alcuni casi se sei dietro un proxy inverso, poiché molte reti aziendali sono configurate. La tua scommessa migliore potrebbe essere quella di creare uno script che richieda whatismyip.org o che cerchi di trovarne uno esistente.
(Come suggerimento, whatismyip.org è preferibile alla maggior parte delle altre soluzioni, poiché restituisce semplicemente il tuo IP come testo normale - nessun testo superfluo, collegamenti, immagini o altri rifiuti. Sarebbe molto più facile da usare in uno script personalizzato rispetto alla maggior parte di gli altri siti di rilevamento IP.)
È possibile utilizzare una richiesta DNS anziché la richiesta HTTP per scoprire il tuo IP pubblico:
C:\> nslookup myip.opendns.com. resolver1.opendns.com
Utilizza il resolver1.opendns.com
server DNS per risolvere il myip.opendns.com.
nome host magico nel tuo indirizzo IP. (Nota: il trailing .
sulla ricerca impedisce l'aggiunta di domini di ricerca, il che può produrre risultati errati.)
Versione Unix:
$ dig +short myip.opendns.com @resolver1.opendns.com
prendi la tua copia di curl
da http://curl.haxx.se/download.html e poi solo
curl "http://myexternalip.com/raw"
o usa powershell:
$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")
(disclaimer: http://myexternalip.com è stato creato da me)
Funziona bene, lo uso principalmente con psexec durante l'ispezione delle connessioni al computer client.
nslookup myip.opendns.com resolver1.opendns.com
Creare un file denominato ip.vbs
e copiarvi quanto segue:
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
Eseguire utilizzando
C:\>cscript ip.vbs
Come notato da nhinkle , è meglio scegliere un sito che restituisce solo IP e non HTML + annunci, ecc. Come:
(fonte: precedentemente http://externip.com/about )
Ho realizzato questo script batch per farlo alcuni mesi fa:
@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
Ti dà la possibilità di inserire l'indirizzo IP negli Appunti e imposta una variabile ambientale - %PublicIP%
.
METODO PIÙ SEMPLICE:
Ora, invece, faccio solo questo:
curl icanhazip.com
o...
curl icanhazip.com | clip
... per inserire l'attuale indirizzo IP pubblico negli Appunti.
Hai bisogno di curl .
Con Powershell 3.0 (Windows 7 predefinito è 2.0) è possibile utilizzare Invoke-WebRequest
Per IPv4:
$tmp =Invoke-WebRequest -URI http://myip.dnsomatic.com/
$tmp.Content
Per IPv6:
$tmp =Invoke-WebRequest -URI http://myexternalip.com/raw
$tmp.Content
Questo ti darà una variabile con cui lavorare se hai qualcosa di specifico che vuoi fare con esso. In realtà lo sto usando per creare uno script per caricare periodicamente l'IP dinamico del mio router, fare in modo che un'altra macchina collauda la comunicazione a intervalli regolari e quindi aggiorni il DNS con l'ultimo IP se è cambiato, così posso accedere ai miei dispositivi da qualsiasi luogo usando un nome invece di dover costantemente inseguire l'IP.
E ovviamente - man mano che i siti cambiano o i loro output cambiano, ti consigliamo di aggiornarlo di conseguenza. :)
powershell.exe -noprofile -command ""
. Separa l'interruzione di linea con un punto e virgola ...
(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
Prova questo:
non necessita di alcun tipo di software esterno installato.
@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));
}
Senza programmi di terze parti è difficile su Windows poiché Telnet non è fornito per impostazione predefinita, ma, se è presente (XP) o acceso (Windows Vista e versioni successive), è sufficiente digitare:
telnet curlmyip.com 80
lo schermo lampeggerà e otterrai solo un cursore ... Tipo successivo:
GET
In maiuscolo ... poi vedrai le intestazioni, seguite dal tuo ip (e scusa se l'ho sfocato, mostrando solo dove sarebbe!):
Altre risposte qui ovviamente funzionano, ma sto cercando di rispondere alla domanda su qualcosa che può essere utilizzato su qualsiasi finestra, senza programmi di terze parti!
Per Windows Vista e versioni successive, è possibile installare Telnet facilmente (e in modo sicuro) tramite Programs and features
o utilizzare il comando seguente:
pkgmgr /iu:”TelnetClient”
curlmyip.com
, ma testato con checkip.dyndns.org
.
Volevo avere una soluzione che funzioni per Windows senza installare strumenti di terze parti. Quindi ho preso l' opzione PowerShell , che dovrebbe eseguire uno script ogni ora.
Si crea questo script con Blocco note
$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 salvalo come getIP.ps1
da qualche parte. È possibile chiamare questo script direttamente in PowerShell o utilizzare la pianificazione attività come ho fatto io. Questo è il comando per l'esecuzione:
powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1
Nell'utilità di pianificazione si crea una nuova attività. Su Trigger utilizzi le impostazioni quotidianamente per ogni 1 giorno e sotto l'opzione avanzata scegli ogni ora per la durata di immediatamente . Controlla anche Esegui attività il prima possibile dopo che un avvio programmato è stato perso nelle Impostazioni . In Azione si incolla il codice di esecuzione sopra riportato.
Il codice PowerShell può essere ottimizzato, perché non sono un guru PowerShell (la mia prima volta con esso). Ora sto testando se lo script viene chiamato ogni ora.
ipchicken.com restituirà il tuo indirizzo IP apparente in formato testo se riesci ad analizzare l'HTML di ritorno estraendo l'IP esterno del router. In alternativa, puoi installare uno di quegli agenti DNS dinamici che aggiorna il tuo IP esterno apparente a un nome di dominio completo e quindi fai semplicemente nslookup sul tuo nome di dominio completo per vedere il tuo attuale numero IP. C'erano quelli gratuiti come DynDNS, ma la maggior parte di essi ora richiede un account con abbonamento a pagamento.