Come ottenere il mio indirizzo IP esterno (su NAT) dalla riga di comando di Windows? [duplicare]


13

Il comando "ipconfig" di Windows può mostrarmi solo i parametri delle interfacce Ethernet della mia macchina (anche con l' ipconfig /allargomento). Può mostrare informazioni dettagliate sull'interfaccia, ma non mi mostrerà mai il mio indirizzo IP esterno su una rete NAT .

ipconfig / all - screenshot di Windows

Tuttavia, ci sono diversi siti Web, come "Qual è il mio indirizzo IP" che può ottenere e mostrare il mio indirizzo IP esterno. Quindi mi chiedo, se è possibile ottenere questo valore esternamente? Dovrei aspettarmi che ci sia un modo per ottenere queste informazioni da una riga di comando sul mio computer locale ...

Ho bisogno di ottenere questo valore per accedere a un'applicazione che sto facendo con VBScript . C'è un modo per farlo, da un cmdsu Windows?


Si noti che i servizi what-is-my-IP basati su HTTP possono fornire l'IP di un server proxy. (E prima che qualcuno sottolinei che esistono proxy HTTPS, non puoi
delegare in

Risposte:


11

Ora, usando il sito fornito da Oliver, questo può essere fatto in VBScript.

Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://ifconfig.me/ip", False
o.send
WScript.StdOut.Write o.responseText

Esiste un metodo simile per PowerShell.


Bello, ha funzionato. Lo inserirò nel mio programma. È una buona soluzione per il mio problema. Grazie.
Diogo,

Hmm, sta restituendo un "Accesso negato" alla riga 4, carattere 1 per questo script. Anche eseguendolo da una riga di comando dei diritti di amministratore ... Sai perché?
Diogo,

@DiogoRocha Non so perché. Quello di Fiasco è probabilmente più affidabile. È anche possibile che tu abbia un firewall o qualcosa che blocchi l'accesso a Internet a wscript/ cscript.
Bob

10

Il problema è che non è il tuo indirizzo IP. È l'indirizzo IP del tuo router.

Quindi non sarai mai in grado di recuperarlo senza passare attraverso il router. E il modo più semplice è semplicemente fare in modo che il router recuperi un sito Web per te (come hai già notato). Perché il router utilizzerà il suo indirizzo IP per recuperare quel sito.

Detto questo, puoi renderti più facile usando ifconfig.me/ip . Ora, se lo hai curl, hai già finito, altrimenti: Wget / cURL alternativo nativo a Windows?


1
ifconfig.me/ip ha impiegato molto tempo a caricarsi. whatismyip.org ti dà un IP di testo normale identico ed è stato molto più veloce.
Pensa al

1
@nhinkle Potrebbe dipendere dalla tua posizione, però. Entrambi sembrano avere lo stesso tempo di caricamento per me, ma il tempo di risposta del ping da ifconfig.me è metà (139ms contro 250ms). Ciò che probabilmente è più importante è che il servizio rimanga attivo il più a lungo possibile, ma non abbiamo davvero modo di saperlo.
Bob

Non c'è niente di sbagliato negli indirizzi IP esterni del mio router considerando le regole di port forwarding e IPv4.
mbx,

5

Crea uno script VB da eseguire a tuo piacimento.

Digita questo in un file txt:

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

Chiudi il file txt e rinominalo in ip.vbs (salvalo in C: per questo esempio)

In windows apri una finestra dos (esegui cmd) ( ah! Ho appena realizzato che se cambi che diventa run dmc !! )

Assicurati di essere in c: / (in caso contrario, digita c: e premi invio, quindi cd .. e inserisci alcune volte fino a visualizzare C:>)

Al prompt del DOS digitare:

cscript ip.vbs

e vedrai immediatamente il tuo IP esterno.

Se metti il ​​file vbs su una chiave USB o qualcosa del genere (e ricordi di eseguire cscript ip.vbs al prompt dos - ma assicurati di essere nella stessa directory del file ip.vbs), puoi portarlo con te ovunque tu vada ed esegui il file .vbs su qualsiasi computer per vedere il loro IP esterno.

Un'altra nota, la riga che ha l'indirizzo per icanhazip.com può essere modificata in uno dei seguenti modi:

http://myip.dnsomatic.com
http://whatismyip.org
http://icanhazip.com
http://www.whatismyip.com/automation/n09230945.asp
http://externip.com

Modifica, puoi anche eseguire il file ip.vbs in Windows senza andare a una finestra DOS e verrà visualizzato in una piccola finestra pop-up.


icanhazip.com ha un tempo di risposta molto breve che è meglio di ipconfig.me/ip qui al centro dell'Europa.
Martin Braun,


3

Per ottenere un indirizzo IP esterno, è necessario chiedere qualcosa al di fuori della rete e fare in modo che riporti quale "indirizzo" IP appare ". Questo può essere fatto tramite lo script eseguendo una query su una pagina dalla quale è facile analizzare il risultato e ricavandone l'indirizzo IP, ma non esiste uno strumento integrato in Windows che ti possa semplicemente dire qual è il tuo indirizzo IP esterno. Dovrai scriverne uno tu stesso o trovarne uno e scaricarlo.


2

Usando qualcosa come DynDNS per assegnare un nome di dominio al tuo indirizzo IP DHCP, puoi quindi fare uno nslookupo ping (se il tuo router è configurato per rispondere), il tuo nome di dominio ed estrarre l'indirizzo IP da quello.

L'unica altra utilità di Windows è traceroute, ma mostrerebbe solo il gateway in uscita a cui ti connetti, non l'indirizzo IP del router che si connette a quel gateway.

Modifica: poiché è necessario un po 'di analisi su quanto sopra per estrarre la stringa dell'indirizzo IP e ifconfig.meha una buona risposta sparsa, ecco una piccola variante dello script di Bob, la funzione può testare per nessuna risposta e restituire un bel IP pulito indirizzo da utilizzare in uno script se il server è attivo.

wscript.echo WAN_IP()

function WAN_IP()
    set obj = createobject("Microsoft.XMLHTTP")
    call obj.open("get", "http://ifconfig.me/ip", false)
    obj.send()

    strresponse = obj.responsetext
    set obj = nothing

    if strresponse <> "" then
        strIP = strresponse
    else
        strIP = "Unavailable"
    end if

    WAN_IP = trim(strIP)

end function

1

Se il tuo router supporta Universal plug & Play (UPnP) puoi interrogare i suoi indirizzi IP.

Su Windows è possibile eseguire query su tali informazioni tramite WMI e dalla riga di comando utilizzando lo strumento WMIC.


2
Potresti fornire un esempio? Sarei molto interessato a questo.
Der Hochstapler,

1

Come altri hanno già detto, è necessario fare affidamento su un servizio esterno. Consiglierei http://www.externalip.net

È possibile utilizzare http://api.externalip.net/ip per ottenere l'ip in formato testo normale. Ha dimostrato di essere veloce e affidabile, inoltre ha un uso illimitato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.