Comment obtenir mon adresse IP externe (via NAT) à partir de la ligne de commande Windows? [dupliquer]

13

La commande Windows "ipconfig" ne peut me montrer que les paramètres des interfaces Ethernet de ma machine (même avec l' ipconfig /allargument). 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 - Capture d'écran Windows

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? Dois-je m'attendre à ce qu'il existe un moyen d'obtenir ces informations à partir d'une ligne de commande sur ma machine locale ...

J'ai besoin d'obtenir cette valeur pour me connecter à une application que je fais avec VBScript . Existe-t-il un moyen de le faire, à partir cmdde Windows?

Diogo
la source
Notez que les services What-is-my-IP basés sur HTTP peuvent vous donner l'IP d'un serveur proxy. (Et avant que quiconque ne fasse remarquer qu'il existe des proxy HTTPS, vous ne pouvez pas proxy HTTPS de manière transparente . Si vous en avez un, vous le saurez.)
billpg

Réponses:

11

Maintenant, en utilisant le site fourni par Oliver, cela peut être fait dans 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.

Bob
la source
Bien, ça a marché. Je vais l'insérer sur mon programme. C'est une bonne solution à mon problème. Je vous remercie.
Diogo
Hmm, il retourne un "Accès refusé" à la ligne 4, caractère 1 pour ce script. Même en l'exécutant à partir d'une ligne de commande de droits d'administrateur ... Savez-vous pourquoi?
Diogo
@DiogoRocha Je ne sais pas pourquoi. Celui de Fiasco est probablement plus fiable. Il est également possible que vous ayez un pare-feu ou quelque chose qui bloque l'accès Internet à wscript/ cscript.
Bob
10

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

Vous ne pourrez donc jamais le récupérer sans passer par votre routeur. Et le moyen le plus simple est de simplement faire en sorte que le routeur récupère un site Web pour vous (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 faciliter la tâche en utilisant ifconfig.me/ip . Maintenant, si vous l'avez fait curl, vous avez déjà terminé, sinon: Wget / cURL alternative native à Windows?

Der Hochstapler
la source
1
ifconfig.me/ip a mis du temps à se charger. whatismyip.org vous donne une IP en texte brut identique et était beaucoup plus rapide.
nhinkle
1
@nhinkle Cela peut cependant dépendre de votre emplacement. Ils semblent tous deux avoir le même temps de chargement pour moi, mais le temps de réponse ping de ifconfig.me est de moitié (139 ms contre 250 ms). Ce qui est probablement plus important, c'est que le service reste en place aussi longtemps que possible, mais nous n'avons vraiment aucun moyen de le savoir.
Bob
Il n'y a rien de mal avec les adresses IP externes de mon routeur compte tenu des règles de redirection de port et IPv4.
mbx
5

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 Windows, ouvrez une fenêtre DOS (run cmd) ( ha! Je viens de réaliser si vous échangez qu'elle devient run dmc !! )

Assurez-vous que vous êtes dans c: / (sinon, tapez c: & appuyez sur entrée, puis cd .. & entrez plusieurs fois jusqu'à ce que vous voyiez C:>)

À l'invite dos, tapez:

cscript ip.vbs

et vous verrez instantanément votre adresse IP externe.

Si vous placez le fichier vbs sur une clé USB ou quelque chose (et n'oubliez pas d'exécuter cscript ip.vbs à l'invite dos - mais assurez-vous que vous êtes dans le même répertoire que le fichier ip.vbs), vous pouvez emporter cela avec vous partout où vous allez et exécutez le fichier .vbs sur n'importe quel ordinateur pour voir leur IP externe.

Une autre note, la ligne qui a l'adresse pour icanhazip.com peut être remplacée par l'une des suivantes:

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

Modifier, vous pouvez également exécuter le fichier ip.vbs dans les fenêtres sans aller dans une fenêtre DOS et il apparaîtra simplement dans une petite fenêtre pop-up.

Champ
la source
icanhazip.com a un temps de réponse très court qui est meilleur que ipconfig.me/ip ici au centre de l'Europe.
Martin Braun
3

Pour obtenir une adresse IP externe, vous devez demander quelque chose en dehors du réseau et lui faire rapporter ce que votre adresse IP «semble» lui être. Cela peut être fait par script en interrogeant une page qui est facile à analyser le résultat et en obtenir l'adresse IP, mais il n'y a pas d'outil intégré à Windows pour vous dire simplement quelle est votre adresse IP externe. Vous devrez en écrire un vous-même ou en trouver un et le télécharger.

Scott Chamberlain
la source
2

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

Le seul autre utilitaire Windows est traceroute, mais il n'affichera 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'analyse sur ce qui précède pour extraire la chaîne d'adresse IP et ifconfig.mea une belle réponse clairsemée, voici une petite variante du script de Bob, la fonction peut tester pour aucune réponse et redonner une belle IP propre adresse à utiliser dans un script si le serveur est opérationnel.

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
Fiasco Labs
la source
1

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 de la ligne de commande à l'aide de l'outil WMIC.

Robert
la source
2
Pourriez-vous fournir un exemple? Cela m'intéresserait beaucoup.
Der Hochstapler
1

Comme d'autres l'ont déjà dit, vous devez vous fier à 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.


la source