web-dev-qa-db-fra.com

Commande Windows qui renvoie une adresse IP externe

Existe-t-il une commande permettant de trouver l'adresse IP externe de mon routeur ou mon routeur NAT\DSL, etc., ce qui évite de consulter whatsmyip.net ou similaire.

53
Junaid Saeed

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, aucune adresse IP n'est attribuée à votre système. 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.

(À 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 simple de l'utiliser dans un script personnalisé. les autres sites de détection IP.)

14
nhinkle

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.com serveur DNS pour résoudre le nom d'hôte magique myip.opendns.com. en votre adresse ip (Remarque: le . de 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
97
jfs

récupérez votre propre copie de curlfrom http://curl.haxx.se/download.html puis simplement

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)

28
akira

Créez un fichier nommé ip.vbs et 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 vous le remarquez note , 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 )

6
hyperslug

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
Antti Lagus

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. :)

5
Bradley Forney

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 .

5
paradroid

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 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 serait!):

enter image description here

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”
3
William Hilsum

Essaye ça:
Ne nécessite l'installation d'aucun logiciel externe.

@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
Filipe YaBa Polido

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
2
Eun

Je voulais avoir une solution qui fonctionne pour Windows sans installer d'outils tiers. J'ai donc pris 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 en tant que getIP.ps1 quelque 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. À Déclencher vous utilisez le paramètre quotidien pour chaque jour et sous option avancée, vous choisissez toutes les heures pour la durée immédiatement. Vérifiez également Exécuter la tâche dès que possible après l’oubli 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
testing

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
1
Sam

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 IP externe apparente vers 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.

0
anthonymaw