web-dev-qa-db-fra.com

Comment obtenir mon adresse IP externe (sur NAT) à partir de la ligne de commande Windows?

La commande Windows "ipconfig" ne peut afficher que les paramètres des interfaces Ethernet de ma machine (même avec l'argument ipconfig /all). Il peut afficher des informations détaillées sur l'interface, mais il ne me montrera jamais mon adresse IP externe sur un réseau NAT .

ipconfig/all -- Windows screenshot

Cependant, il existe plusieurs sites Web, tels que "Quelle est mon adresse IP" , qui peuvent obtenir et afficher mon adresse IP externe. Je me demande donc s'il est possible d'obtenir cette valeur en externe? Devrais-je m'attendre à ce qu'il y ait un moyen d'obtenir cette information à partir d'une ligne de commande sur ma machine locale ...

Je dois obtenir cette valeur pour me connecter à une application que je fais avec VBScript . Y a-t-il un moyen de faire cela, à partir d'une cmd sous Windows?

13
Diogo

Maintenant, en utilisant le site fourni par Oliver, cela peut être fait en VBScript.

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

Il existe une méthode similaire pour PowerShell.

11
Bob

Le problème est que ce n'est pas votre adresse IP. C'est l'adresse IP de votre routeur.

Ainsi, vous ne pourrez jamais le récupérer sans passer par votre routeur. Et le moyen le plus simple consiste simplement à faire en sorte que le routeur récupère un site Web (comme vous l'avez déjà remarqué). Parce que le routeur utilisera son adresse IP pour récupérer ce site.

Cela étant dit, vous pouvez vous simplifier la tâche en utilisant ifconfig.me/ip . Maintenant, si vous avez curl, vous avez déjà terminé, sinon: Alternative Wget/cURL native de Windows?

10
Der Hochstapler

Créez un script VB à exécuter à votre guise.

Tapez ceci dans un fichier 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

Fermez le fichier txt et renommez-le en ip.vbs (enregistrez-le en C: pour cet exemple)

Dans les fenêtres ouvrez une fenêtre dos (exécutez cmd) ( ha! Je viens de me rendre compte que si vous permutez que cela devient run dmc !! )

Assurez-vous que vous êtes dans c:/(sinon, tapez c: et appuyez sur Entrée, puis cd. . & entrez quelques fois jusqu'à voir C:>)

Au type d'invite:

cscript ip.vbs

et vous verrez instantanément votre adresse IP externe.

Si vous mettez le fichier vbs sur une clé USB ou quelque chose (et n'oubliez pas de lancer cscript ip.vbs à l'invite du dos - mais assurez-vous que vous êtes dans le même répertoire que le fichier ip.vbs), vous pouvez l’emporter partout avec vous et exécuter le fichier .vbs sur n’importe quel ordinateur pour afficher leur adresse IP externe.

Une autre note, la ligne qui a l’adresse pour icanhazip.com peut être remplacée par l’un des suivants:

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

Cliquez sur Modifier, vous pouvez également exécuter le fichier ip.vbs dans Windows sans passer par une fenêtre DOS et il s'affichera dans une petite fenêtre contextuelle.

5
Champ

Je suis tombé sur ce site en cherchant l'équivalent PowerShell et j'ai pensé partager cette commande si quelqu'un d'autre cherchait:

Invoke-WebRequest ifconfig.me/ip

Plus de détails sont disponibles ici si vous en avez besoin - http://jfrmilner.wordpress.com/2012/12/22/powershell-quick-tip-03-whats-my-external-ip -address-windows-command-line/

4
jfrmilner

Pour obtenir une adresse IP externe, vous devez demander quelque chose en dehors du réseau et lui demander de faire rapport sur ce que votre adresse IP "semble" lui être. Pour ce faire, vous pouvez interroger une page sur laquelle il est facile d’analyser le résultat et obtenir l’adresse IP, mais aucun outil intégré à Windows ne permet de vous indiquer simplement quelle est votre adresse IP externe. Vous devrez en écrire un vous-même ou en trouver un et le télécharger.

3
Scott Chamberlain

En utilisant quelque chose comme DynDNS pour attribuer un nom de domaine à votre adresse IP DHCP, vous pouvez alors faire un nslookup of ou un ping (si votre routeur est configuré pour répondre) , votre nom de domaine et en extraire l’adresse IP.

traceroute est le seul autre utilitaire Windows, mais il ne montre que la passerelle sortante à laquelle vous vous connectez, pas l'adresse IP de votre routeur qui se connecte à cette passerelle.

Edit: Comme il faut un peu d'analyser ce qui précède pour extraire la chaîne d'adresse IP et que ifconfig.me a une réponse fragmentée de Nice, voici un peu une variante du script de Bob, le fonction peut tester l’absence de réponse et renvoyer une adresse IP propre et agréable pour une utilisation dans un script si le serveur est actif.

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
2
Fiasco Labs

Comme d'autres l'ont déjà dit, vous devez faire appel à un service externe. Je recommanderais http://www.externalip.net

Vous pouvez utiliser http://api.externalip.net/ip pour obtenir l'ip au format texte brut. Il s’est avéré rapide et fiable, et son utilisation est illimitée.

1
user178151

Si votre routeur prend en charge Universal Plug & Play (UPnP), vous pouvez interroger ses adresses IP.

Sous Windows, vous pouvez interroger ces informations à l'aide de WMI et à partir d'une ligne de commande à l'aide de l'outil WMIC.

1
Robert