[WIN cmd] Wie kriegt man seine WAN-IP raus?

SoDaTierchen

Captain
Dabei seit
Feb. 2011
Beiträge
3.230
Hallo Community,

ich versuche mich gerade an einem kleinen Script um einen Game-Server verteilt aus einer Dropbox auszuführen. Also viele Leute können den Starten, ohne das Writelocks die Dateien korrumpieren. Das klappt auch soweit.

Im folgenden möchte ich das Script aber vereinfachen, und dafür wäre es nötig, die eigene WAN-IP herauszubekommen. Idealerweise nur die IP, mit einem gewissen Kontext wäre aber auch noch okay.

Folgendes Setup ist stets gegeben: PC (Win7/8) - Router - WAN.

Gibt es eine Möglichkeit, über die CMD ohne externe Mittel (wget, curl) die eigene WAN-IP herauszubekommen?

​Danke für eure Hilfe
 

heinzm62

Lieutenant
Dabei seit
Juli 2011
Beiträge
607
Da die WAN IP idr. nur im Gateway hinterlegt ist, kennt der Client diese nicht.
Wäre DynDNS eine Alternative?
 
1

1668mib

Gast
Dein Rechner hat gar keine WAN-IP sondern nur der Router... ergo müsstest du sie von ihm irgendwie erfragen oder eben über zusätzliche Tools...
 

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
24.973
Hik,

hier sind einige Wege aufgeführt wie man sowas machen kann. Auch ohne curl oder wget.

Einfachste Möglichkeit:

Code:
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
Das als "script.vbs" speichern und dann aufrufen mit "C:\>cscript ip.vbs" in der Command oder einfach aurufen bzw. weiterverarbeiten, je nachdem was du vorhast.

VG,
Mad
 
K

Klonky

Gast
Oder über Powershell ohne irgendwelche zusätzlichen Tools...

Code:
## Function to retrieve external IP address.
## the external address is retrieved from the
## title header of the webpage "www.myip.dk"

function Get-ExternalIP {
    $source = "http://www.myip.dk"
    $client = new-object System.Net.WebClient
    $webpage = $client.downloadString($source)
    $lines = $webpage.split("`n")
    foreach ($line in $lines) {
        if ($line.contains("</title>")) {
            $ip = $line.replace("    <title>Your IP address is: ", "").replace("</title>","")
        }
    }
    $obj = New-Object Object
    $obj | Add-Member Noteproperty externalIP -value $ip
    $obj
}
 

SoDaTierchen

Captain
Ersteller dieses Themas
Dabei seit
Feb. 2011
Beiträge
3.230
Die Lösung von MadMan1209 gefällt mir sehr gut. Vielen Dank !
 
Top