Commande Windows qui renvoie l'IP externe
Existe-t-il une commande par laquelle je peux trouver l'IP externe de mon routeur ou de mon routeur NAT\DSL, etc., éliminant le besoin de visiter whatsmyip.net ou similaire.
Existe-t-il une commande par laquelle je peux trouver l'IP externe de mon routeur ou de mon routeur NAT\DSL, etc., éliminant le besoin de visiter whatsmyip.net ou similaire.
Vous pourriez utiliser une requête DNS au lieu d'une requête HTTP pour connaître votre IP publique :
C:\> nslookup myip.opendns.com. resolver1.opendns.com
Il utilise le serveur dns resolver1.opendns.com
pour résoudre le nom d'hôte magique myip.opendns.com.
en votre adresse ip. (Remarque : le .
qui suit la recherche empêche d'ajouter des domaines de recherche, ce qui peut donner des résultats incorrects).
Version Unix :
$ dig +short myip.opendns.com @resolver1.opendns.com
Prenez votre propre copie de curl
from http://curl.haxx.se/download.html et ensuite juste
curl "http://myexternalip.com/raw"
ou utilisez powerhell :
$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")
(disclaimer : http://myexternalip.com a été créé par moi)
Il n'y a pas de commande intégrée pour le faire. Une partie du problème est que lorsque vous êtes connecté à l'internet par un routeur, votre matériel réseau n'est pas directement connecté à l'internet, donc votre système n'est pas spécifiquement affecté à une adresse IP. Il est même possible que vous ayez plusieurs IP externes dans certains cas si vous êtes derrière un proxy inverse, car de nombreux réseaux d'entreprise sont mis en place. Le mieux est peut-être de créer un script qui interroge whatismyip.org , ou d'essayer de trouver s'il en existe déjà un.
(Comme conseil, whatismyip.org est préférable à la plupart des autres solutions, car il renvoie simplement votre IP en texte clair - pas de texte, de liens, d'images ou d'autres déchets superflus. Il serait beaucoup plus facile à utiliser dans un script personnalisé que la plupart des autres sites de détection d'IP).
Cela fonctionne bien, je l'utilise surtout avec psexec pour inspecter les connexions des ordinateurs clients.
nslookup myip.opendns.com resolver1.opendns.com
Créer un fichier nommé ip.vbs
et y copier ce qui suit :
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 nhinkle noté , il est préférable de choisir un site qui renvoie uniquement l'IP et non le HTML + les publicités, etc. comme :
(source : anciennement http://externip.com/about )
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 avez quelque chose de spécifique à faire avec elle. 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 faire en sorte qu'une autre machine teste la communication à intervalles réguliers, puis de mettre à jour le DNS avec la dernière adresse IP si elle a changé, afin de pouvoir accéder à mon équipement de n'importe où en utilisant un nom au lieu de devoir constamment rechercher l'adresse IP.
Et bien sûr, au fur et à mesure que les sites changent ou que leurs résultats changent, vous voudrez mettre à jour ce script en conséquence. :)
Pour ce faire, j'ai créé ce script de lot 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 il définit une variable d'environnement - %PublicIP%
.
MÉTHODE DE SIMPLIFICATION:
Maintenant, je fais juste ceci à la place :
curl icanhazip.com
ou…
curl icanhazip.com | clip
…pour mettre l'adresse IP publique actuelle dans le presse-papiers.
Vous avez besoin de cURL .
Sans programmes tiers est difficile sur Windows car Telnet n'est pas fourni par défaut, mais, s'il est là (XP) ou activé (Windows Vista et au-dessus), il suffit de taper :
telnet curlmyip.com 80
l'écran clignotera, et vous aurez juste un curseur… Tapez ensuite :
GET
En majuscules… vous verrez alors les en-têtes, suivis de votre ip (et désolé de l'avoir floué, en montrant juste où il serait ! ) :
D'autres réponses ici fonctionnent évidemment, mais, j'essaie de m'en tenir à la question sur quelque chose qui peut être utilisé sur n'importe quelle fenêtre, sans programmes tiers !
Pour Windows Vista et au-dessus, vous pouvez installer telnet facilement (et en toute sécurité) via Programs and features
, ou utiliser la commande suivante :
pkgmgr /iu:”TelnetClient”
Essayez ceci : Ne nécessite aucun type de logiciel externe 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));
}
Je voulais avoir une solution qui fonctionne pour Windows sans installer d'outils tiers. J'ai donc pris l'option powershell, qui devrait lancer 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 l'enregistrez sous le nom de getIP.ps1
quelque part. Vous pouvez appeler ce script soit directement dans powerhell, soit utiliser le planificateur de tâches comme je l'ai fait. Voici la commande à 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. A Trigger vous utilisez le paramètre quotidien pour chaque jour et sous l'option avancée vous choisissez chaque heure pour la durée de l'immédiat. Cochez également Exécuter la tâche dès que possible après qu'un démarrage programmé est manqué dans les Réglages. Sous Action vous collez le code d'exécution ci-dessus.
Le code de powershell peut être optimisé, parce que je ne suis pas un gourou de powershell (ma première fois avec lui). Maintenant, je teste si le script est appelé toutes les heures.
ipchicken.com renvoie votre adresse IP apparente au format texte si vous pouvez analyser le HTML renvoyé en extrayant l'IP externe de votre routeur. Vous pouvez également installer un de ces agents DNS dynamiques qui met à jour votre IP externe apparente en un FQDN et qui vous permet de voir votre numéro IP actuel. Il y avait autrefois des agents gratuits comme DynDNS, mais la plupart d'entre eux nécessitent maintenant un compte d'abonnement payant.