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?
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?
Réponses:
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.)
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 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
prenez votre propre copie curl
de 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 fonctionne bien, je l’utilise surtout avec psexec lors de l’inspection des connexions des ordinateurs clients.
nslookup myip.opendns.com resolver1.opendns.com
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 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 )
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 .
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. :)
powershell.exe -noprofile -command ""
. Séparez le saut de ligne par un point-virgule ...
(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
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));
}
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!):
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”
curlmyip.com
, mais a testé de travailler avec checkip.dyndns.org
.
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.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. 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.
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
icanhazip.com
ne fonctionnera pas pour moi et l'autre ne fait pas IPv6 correctement. :)
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.