Windows-Befehl, der die externe IP-Adresse zurückgibt


Antworten:


14

Es gibt keinen eingebauten Befehl, um dies zu tun. Ein Teil des Problems besteht darin, dass Ihre Netzwerkhardware nicht direkt mit dem Internet verbunden ist, wenn Sie über einen Router mit dem Internet verbunden sind, sodass Ihrem System keine spezifische IP zugewiesen wird. Es ist möglich, dass Sie in einigen Fällen sogar mehrere externe IP-Adressen haben, wenn Sie sich hinter einem Reverse-Proxy befinden, da viele Unternehmensnetzwerke eingerichtet sind. Am besten erstellen Sie ein Skript, das whatismyip.org abfragt , oder versuchen herauszufinden, ob eines bereits vorhanden ist.

(Als Tipp ist whatismyip.org den meisten anderen Lösungen vorzuziehen, da es nur Ihre IP als reinen Text zurückgibt - kein überflüssiger Text, Links, Bilder oder anderer Müll. Es wäre viel einfacher in einem benutzerdefinierten Skript zu verwenden als die meisten anderen die anderen IP-Erkennungsstellen.)


6
Sie haben whatismyip.org leider geändert; Die IP-Adresse wird jetzt als Image zurückgegeben , sodass sie für Skripte praktisch unbrauchbar ist. Die Website „icanhazip.com“ erwähnt unten tut Arbeit.
Onnodb

Yandex arbeitet, überprüfen Sie das Skript unten.
Filipe YaBa Polido

Arbeits nativen Befehl von unten superuser.com/a/722397/216374
PsychoData

107

Sie könnten eine DNS-Anfrage anstelle einer HTTP-Anfrage verwenden, um Ihre öffentliche IP herauszufinden:

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

Es verwendet resolver1.opendns.comDNS-Server, um den magischen myip.opendns.com.Hostnamen in Ihre IP-Adresse aufzulösen . (Hinweis: Durch das Nachstellen .in der Suche wird verhindert, dass Suchdomänen angehängt werden, was zu falschen Ergebnissen führen kann.)

Unix-Version:

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

1
Lief wie am Schnürchen.
BK

Genial, funktioniert auch ohne Installation.
Ericosg

Funktionierte im November 2017 unter Windows 10 nicht mehr für mich. Die PowerShell-Antwort von Bradley Forney funktioniert.
Jason

Hat bei mir noch geklappt (Windows 10, Dez 2017). Sehr clever @jfs, hat OpenDNS dies irgendwo dokumentiert, wie haben Sie es entdeckt?
Alex KeySmith

4
Dies sollte die akzeptierte Antwort sein, da sie einen tatsächlichen Befehl liefert und funktioniert. Die akzeptierte Antwort besagt, dass es keinen Befehl gibt (was sich als falsch herausstellt), und schlägt vor, ein Skript zu verwenden, ohne wirklich weitere Anweisungen zu geben.
CyberClaw

30

schnapp dir deine eigene Kopie curlvon http://curl.haxx.se/download.html und dann einfach

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

oder PowerShell verwenden:

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

(Haftungsausschluss: http://myexternalip.com wurde von mir erstellt)


Das liefert nur eine IPv6-Adresse. Gibt es eine Möglichkeit, die IPv4-Adresse abzurufen?
tim11g

Ich las weiter und fand die folgenden IPv4 / IPv6-Beispiele für Powershell. Es ist möglich, IPv4 mit CURL wie folgt zu erhalten: "C:> curl" myip.dnsomatic.com "
tim11g

7

Das funktioniert gut, ich benutze es meistens mit psexec, wenn ich Client-Computer-Verbindungen inspiziere.

nslookup myip.opendns.com resolver1.opendns.com

6

Erstellen Sie eine Datei mit dem Namen ip.vbsund kopieren Sie Folgendes hinein:

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

Ausführen mit

C:\>cscript ip.vbs

Wie bereits erwähnt , ist es am besten, eine Website auszuwählen, die nur die IP- Adresse und keine HTML + -Anzeigen usw. zurückgibt, wie z.

(Quelle: früher http://externip.com/about )


5

Ich habe dieses Batch-Skript dazu vor ein paar Monaten erstellt:

@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

Sie haben die Möglichkeit, die IP-Adresse in die Zwischenablage zu kopieren und eine Umgebungsvariable festzulegen %PublicIP%.


EINFACHERE METHODE:

Jetzt mache ich das einfach stattdessen:

curl icanhazip.com

oder...

curl icanhazip.com | clip

... um die aktuelle öffentliche IP-Adresse in die Zwischenablage zu bekommen.

Du brauchst CURL .


1
Das Skript von paradroid hat gut funktioniert, aber whatsmyip hat die Webseite auf automation.whatismyip.com/n09230945.asp verschoben. Wenn Sie dies ändern, funktioniert es perfekt.

5

Mit Powershell 3.0 (Windows 7 Standard ist 2.0) können Sie verwenden Invoke-WebRequest

Für IPv4:

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

Für IPv6:

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

Dies gibt Ihnen eine Variable, mit der Sie arbeiten können, wenn Sie etwas Bestimmtes haben, das Sie damit tun möchten. Ich verwende dies tatsächlich, um ein Skript zu erstellen, mit dem die dynamische IP meines Routers in regelmäßigen Abständen hochgeladen, eine andere Testkommunikation durchgeführt und anschließend DNS mit der neuesten IP aktualisiert wird, falls sich diese geändert hat, sodass ich von überall aus auf meine Ausrüstung zugreifen kann Verwenden eines Namens, anstatt die IP ständig zu verfolgen.

Und natürlich - wenn sich die Websites oder deren Ausgaben ändern, sollten Sie dies entsprechend aktualisieren. :)


Dieser Ansatz hat für mich unter Windows 10 hervorragend funktioniert. Ich benötigte einen einzeiligen Befehl, daher wurde der obige in Anführungszeichen nachher ausgeführt powershell.exe -noprofile -command "". Trennen Sie den Zeilenumbruch mit einem Semikolon ...
Jason

1
Einzeiler? Laufen (Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
Sie

3

Versuchen Sie Folgendes: Es
muss keine externe Software installiert sein.

@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

Ohne Programme von Drittanbietern läuft Windows schlecht, da Telnet standardmäßig nicht mitgeliefert wird. Wenn es jedoch vorhanden (XP) oder eingeschaltet ist (Windows Vista und höher), geben Sie einfach Folgendes ein:

telnet curlmyip.com 80

Der Bildschirm blinkt und Sie erhalten nur einen Cursor ... Nächster Typ:

GET

In Großbuchstaben ... sehen Sie dann die Überschriften, gefolgt von Ihrer IP-Adresse (und es tut mir leid, dass ich sie verwischt habe, nur um zu zeigen, wo sie wäre!):

Bildbeschreibung hier eingeben

Andere Antworten funktionieren hier natürlich, aber ich versuche, die Frage nach etwas zu beantworten, das auf jedem Windows ohne Programme von Drittanbietern verwendet werden kann!

Unter Windows Vista und höher können Sie Telnet einfach (und sicher) installieren Programs and featuresoder den folgenden Befehl verwenden:

pkgmgr /iu:”TelnetClient”

Das (und die meisten Antworten!) Gehen davon aus, dass die Quell-Website Ihre IP-Adresse genau erfasst - einige Arten von Proxys vermasseln dies. Ich habe meine IP-Adresse von meinem Router gestrichen. Interessanterweise funktioniert in diesen Fällen eine Website, die einen nicht standardmäßigen Port verwendet, möglicherweise einwandfrei.
Geselle Geek

Ich arbeite nicht mit curlmyip.com, aber getestet mit checkip.dyndns.org.
Sopalajo de Arrierez

2

Sie können ifcfg.me verwenden . Es unterstützt einige interne Befehle, die standardmäßig mit Windows geliefert werden.

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

1

Ich wollte eine Lösung, die für Windows funktioniert, ohne Tools von Drittanbietern zu installieren. Also habe ich die Option Powershell gewählt , die jede Stunde ein Skript ausführen sollte.

Sie erstellen dieses Skript mit 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"

und speichern Sie es als getIP.ps1irgendwo. Sie können dieses Skript entweder direkt in Powershell aufrufen oder den Aufgabenplaner verwenden, wie ich es getan habe. Dies ist der Befehl zum Ausführen von:

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

Im Taskplaner legen Sie eine neue Aufgabe an. Bei Trigger verwenden Sie die Einstellung täglich für jeden Tag und bei erweiterter Option wählen Sie jede Stunde für die Dauer von sofort . Aktivieren Sie auch die Option Task so schnell wie möglich ausführen, nachdem ein geplanter Start in den Einstellungen verpasst wurde . Unter Aktion fügen Sie den obigen Ausführungscode ein.

Der Powershell-Code kann optimiert werden, da ich kein Powershell-Guru bin (das erste Mal damit). Jetzt teste ich, ob das Skript stündlich aufgerufen wird.


1

Hier ist, was ich herausgefunden habe, es ist möglich, einen eingebauten Befehl zu verwenden, um eine öffentliche IP-Adresse zu erhalten, aber Sie haben Zugang zum Internet

telnet icanhazip.com

oder

telnet myip.gelma.net

Guter Fang! Obwohl icanhazip.comes bei mir nicht funktioniert und der andere IPv6 nicht richtig macht. :)
Daniel B

0

ipchicken.com gibt Ihre scheinbare IP-Adresse im Textformat zurück, wenn Sie den zurückgegebenen HTML-Code analysieren können, den Sie für die externe IP-Adresse Ihres Routers verwenden. Alternativ können Sie einen dieser dynamischen DNS-Agenten installieren, der Ihre scheinbare externe IP-Adresse auf einen vollqualifizierten Domänennamen aktualisiert, und anschließend Ihren vollqualifizierten Domänennamen nachschlagen, um Ihre aktuelle IP-Nummer anzuzeigen. Früher gab es kostenlose wie DynDNS, aber die meisten von ihnen benötigen jetzt ein kostenpflichtiges Abonnementkonto.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.