Gibt es einen Befehl, mit dem ich meine externe IP-Adresse von meinem Router oder meinem NAT \ DSL-Router usw. finden kann, sodass whatsmyip.net oder ähnliches nicht mehr aufgerufen werden muss?
Gibt es einen Befehl, mit dem ich meine externe IP-Adresse von meinem Router oder meinem NAT \ DSL-Router usw. finden kann, sodass whatsmyip.net oder ähnliches nicht mehr aufgerufen werden muss?
Antworten:
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.)
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.com
DNS-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
schnapp dir deine eigene Kopie curl
von 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 funktioniert gut, ich benutze es meistens mit psexec, wenn ich Client-Computer-Verbindungen inspiziere.
nslookup myip.opendns.com resolver1.opendns.com
Erstellen Sie eine Datei mit dem Namen ip.vbs
und 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 )
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 .
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. :)
powershell.exe -noprofile -command ""
. Trennen Sie den Zeilenumbruch mit einem Semikolon ...
(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
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));
}
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!):
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 features
oder den folgenden Befehl verwenden:
pkgmgr /iu:”TelnetClient”
curlmyip.com
, aber getestet mit checkip.dyndns.org
.
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
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.ps1
irgendwo. 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.
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
icanhazip.com
es bei mir nicht funktioniert und der andere IPv6 nicht richtig macht. :)
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.