Commande Windows qui renvoie une adresse IP externe


Réponses:


14

Il n'y a pas de commande intégrée pour faire cela. Une partie du problème est que, lorsque vous êtes connecté à Internet via un routeur, votre matériel réseau n'est pas directement connecté à Internet. Par conséquent, votre système n'est pas spécifiquement affecté à une adresse IP. Il est possible que vous ayez même plusieurs adresses IP externes dans certains cas si vous êtes derrière un proxy inverse, car de nombreux réseaux d'entreprise sont configurés. Votre meilleur choix pourrait être de créer un script qui interroge whatismyip.org , ou d'essayer de trouver s'il en existe déjà un.

(A titre indicatif, whatismyip.org est préférable à la plupart des autres solutions, car il ne renvoie que votre adresse IP sous forme de texte brut. Aucun texte superflu, liens, images ou autres déchets. Il serait beaucoup plus facile de l'utiliser dans un script personnalisé que la plupart des autres. les autres sites de détection IP.)


6
Ils ont malheureusement changé whatismyip.org; l'adresse IP est maintenant renvoyée sous forme d' image , ce qui la rend quasiment inutile pour les scripts. Le site « icanhazip.com » mentionné ci - dessous fait le travail.
Onnodb

Yandex fonctionne, consultez le script ci-dessous.
Filipe YaBa Polido

Commande native de travail depuis superuser.com/a/722397/216374
PsychoData le

107

Vous pouvez utiliser une requête DNS au lieu d'une requête HTTP pour connaître votre adresse IP publique:

C:\> nslookup myip.opendns.com. resolver1.opendns.com

Il utilise resolver1.opendns.comserveur dns pour résoudre le magique myip.opendns.com.nom d' hôte à votre adresse IP. (Remarque: la fin .de la recherche empêche l'ajout de domaines de recherche, ce qui peut générer des résultats incorrects.)

Version Unix:

$ dig +short myip.opendns.com @resolver1.opendns.com

1
Travaillé comme un charme.
BK

brillant, fonctionne sans rien installer aussi.
ericosg

Ne fonctionnait plus pour moi en novembre 2017 sur Windows 10. La réponse PowerShell de Bradley Forney fonctionne.
Jason

Travaillé pour moi encore (Windows 10, décembre 2017). Très intelligent @jfs, OpenDNS a-t-il ceci documenté quelque part, comment l'avez-vous découvert?
Alex KeySmith

4
Cela devrait être la réponse acceptée, car elle fournit une commande réelle, et cela fonctionne. La réponse acceptée indique qu'il n'y a pas de commande (ce qui est prouvé faux) et suggère d'utiliser un script sans donner de véritable directive.
CyberClaw

30

prenez votre propre copie curlde http://curl.haxx.se/download.html et puis juste

curl "http://myexternalip.com/raw"

ou utilisez Powershell:

$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")

(disclaimer: http://myexternalip.com a été créé par moi)


Cela ne fournit qu'une adresse IPv6. Est-il possible d'obtenir l'adresse IPv4?
tim11g

J'ai continué à lire et à trouver les exemples IPv4 / IPv6 ci-dessous pour Powershell. Il est possible d’obtenir IPv4 avec CURL comme ceci "C:> curl" myip.dnsomatic.com "
tim11g

7

Cela fonctionne bien, je l’utilise surtout avec psexec lors de l’inspection des connexions des ordinateurs clients.

nslookup myip.opendns.com resolver1.opendns.com

6

Créez un fichier nommé ip.vbset copiez-y les éléments suivants:

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

Exécuter en utilisant

C:\>cscript ip.vbs

Comme indiqué par nhinkle , il est préférable de choisir un site qui renvoie uniquement l'adresse IP et non les annonces HTML +, etc., comme:

(source: anciennement http://externip.com/about )


5

J'ai fait ce script batch pour le faire il y a quelques mois:

@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

Il vous donne la possibilité de mettre l'adresse IP dans le presse-papiers et définit une variable d'environnement - %PublicIP%.


MÉTHODE PLUS SIMPLE:

Maintenant, je fais juste ça à la place:

curl icanhazip.com

ou...

curl icanhazip.com | clip

... pour obtenir l'adresse IP publique actuelle dans le presse-papiers.

Vous avez besoin de cURL .


1
Le script de paradroid a bien fonctionné, mais whatsmyip a déplacé la page Web vers automation.whatismyip.com/n09230945.asp. Si vous passez à ceci, cela fonctionnera parfaitement.

5

Avec Powershell 3.0 (Windows 7 par défaut est 2.0), vous pouvez utiliser Invoke-WebRequest

Pour IPv4:

$tmp =Invoke-WebRequest -URI http://myip.dnsomatic.com/
$tmp.Content

Pour IPv6:

$tmp =Invoke-WebRequest -URI http://myexternalip.com/raw
$tmp.Content

Cela vous donnera une variable avec laquelle travailler si vous voulez faire quelque chose de spécifique. En fait, je l'utilise pour créer un script permettant de télécharger périodiquement l'adresse IP dynamique de mon routeur, de lui envoyer une autre machine test de communication à intervalles réguliers, puis de mettre à jour le DNS avec la dernière adresse IP si elle a été modifiée afin que je puisse accéder à mon équipement de n'importe où en en utilisant un nom au lieu d'avoir à poursuivre constamment l'IP.

Et bien sûr, au fur et à mesure que les sites changent ou que leurs sorties changent, vous voudrez mettre à jour cela en conséquence. :)


Cette approche fonctionnait très bien pour moi sur Windows 10. J'avais besoin d'une commande sur une ligne. J'ai donc exécuté ce qui précède entre guillemets powershell.exe -noprofile -command "". Séparez le saut de ligne par un point-virgule ...
Jason

1
Bon mot? Il suffit de courir(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
merosss

3

Essayez ceci:
aucun logiciel externe n’a besoin d’être installé.

@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));
}

3

Sans programmes tiers, Windows est difficile à installer car Telnet n'est pas fourni par défaut, mais s'il existe (XP) ou activé (Windows Vista et supérieur), tapez simplement:

telnet curlmyip.com 80

l'écran clignotera et vous obtiendrez simplement un curseur ... Type suivant:

GET

En lettres majuscules ... vous verrez alors les en-têtes, suivis de votre adresse IP (et désolée de l’avoir floutée, indiquant simplement où elle se trouverait!):

entrez la description de l'image ici

Les autres réponses ici fonctionnent évidemment, mais, j'essaie de garder la question sur quelque chose qui peut être utilisé sur toutes les fenêtres, sans programmes tiers!

Pour Windows Vista et les versions ultérieures, vous pouvez installer telnet facilement (et en toute sécurité) via Programs and features, ou utiliser la commande suivante:

pkgmgr /iu:”TelnetClient”

Cela (et la plupart des réponses!) Suppose que le site Web source récupère votre adresse IP avec précision - certains types de mandataires gâchent tout cela. Je raclais mon adresse IP de mon routeur cause de cela. Fait intéressant, dans ces cas, un site Web utilisant un port non standard peut fonctionner correctement.
Journeyman Geek

Ne fonctionne pas avec curlmyip.com, mais a testé de travailler avec checkip.dyndns.org.
Sopalajo de Arrierez

2

Vous pouvez utiliser ifcfg.me . il prend en charge certaines commandes internes fournies avec Windows par défaut.

curl ifcfg.me
nslookup . ifcfg.me
telnet ifcfg.me
ftp ifcfg.me
finger @ifcfg.me

1

Je voulais avoir une solution qui fonctionne pour Windows sans installer d'outils tiers. J'ai donc choisi l' option Powershell , qui devrait exécuter un script toutes les heures.

Vous créez ce script avec Notepad

$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"

et enregistrez-le comme getIP.ps1quelque part. Vous pouvez appeler ce script directement dans Powershell ou utiliser le planificateur de tâches comme je l’ai fait. C'est la commande pour exécuter:

powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1

Dans le planificateur de tâches, vous créez une nouvelle tâche. Chez Trigger, vous utilisez le réglage quotidiennement pour chaque jour et, sous l'option avancée, vous choisissez toutes les heures pour une durée immédiate . Cochez également Exécuter la tâche dès que possible après l’absence d’un démarrage prévu dans les paramètres . Sous Action, vous collez le code d'exécution ci-dessus.

Le code Powershell peut être optimisé, car je ne suis pas un gourou Powershell (ma première fois avec lui). Maintenant, je teste si le script s'appelle toutes les heures.


1

Voici ce que j'ai découvert: il est possible d'utiliser une commande intégrée pour obtenir une adresse IP publique, mais vous avez accès à Internet.

telnet icanhazip.com

ou

telnet myip.gelma.net

Bonne prise! Bien que icanhazip.comne fonctionnera pas pour moi et l'autre ne fait pas IPv6 correctement. :)
Daniel B

0

ipchicken.com renverra votre adresse IP apparente au format texte si vous pouvez analyser le code HTML renvoyé et extraire l'adresse IP externe de votre routeur. Vous pouvez également installer l'un de ces agents DNS dynamiques qui mettent à jour votre adresse IP externe apparente sur un nom de domaine complet, puis effectuez simplement une recherche sur votre nom de domaine complet pour afficher votre numéro IP actuel. Il y en avait autrefois gratuitement, comme DynDNS, mais la plupart d’entre eux exigent maintenant un compte d’abonnement payant.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.