web-dev-qa-db-ja.com

Windowsコマンドラインから外部IPアドレス(NAT経由)を取得する方法は?

Windows "ipconfig" コマンドは、マシンのイーサネットインターフェイスからのパラメータのみを表示できます(ipconfig /all引数)。インターフェースに関する詳細情報を表示できますが、 [〜#〜] nat [〜#〜] ネットワーク上の外部IPアドレスは表示されません。

ipconfig/all -- Windows screenshot

ただし、外部IPアドレスを取得して表示できる "What is my IP address" など、いくつかのWebサイトがあります。だから、私はこの値を外部から取得することが可能かどうか疑問に思っていますか?私のローカルマシンのコマンドラインからこの情報を取得する方法があると思いますか?.

VBScript で実行しているアプリケーションにログオンするには、この値を取得する必要があります。 Windowsのcmdからこれを行う方法はありますか?

13
Diogo

これで、提供されたサイトOliverを使用して、これをVBScriptで実行できます。

Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://ifconfig.me/ip", False
o.send
WScript.StdOut.Write o.responseText

PowerShellにも同様の方法があります。

11
Bob

問題は、それがあなたのIPアドレスではないということです。ルーターのIPアドレスです。

したがって、ルーターを経由せずにそれを取得することはできません。そして、最も簡単な方法は、ルーターにWebサイトを取得させることです(既にお気づきのように)。これは、ルーターがIPアドレスを使用してそのサイトを取得するためです。

そうは言っても、 ifconfig.me/ip を使用することで自分自身を簡単にすることができます。 curlがあれば、もう完了です。もしそうでなければ、- Wget/cURL Windowsネイティブの代替?

10
Der Hochstapler

VBスクリプトを作成して、自由に実行できます。

これをtxtファイルに入力します。

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

Txtファイルを閉じ、名前をip.vbsに変更します(この例ではC:に保存します)。

ウィンドウでdosウィンドウを開く(cmdを実行)(ha!スワップすると、実行dmc !!)になることがわかりました

C:/にいることを確認します(そうでない場合は、c:と入力してEnterキーを押し、次にcdを押します。 。&C:>が表示されるまで数回入力します

Dosプロンプトで次のように入力します。

cscript ip.vbs

すぐに外部IPが表示されます。

あなたがvbsファイルをusbキーまたは何かの上に置いた場合(そしてdosプロンプトでcscript ip.vbsを実行することを忘れないでください-しかし、あなたがip.vbsファイルと同じディレクトリにあります。これをどこにでも持って行き、任意のコンピューターで.vbsファイルを実行して外部IPを確認できます。

もう1つの注意点として、icanhazip.comのアドレスを持つ行は、次のいずれかに変更できます。

http://myip.dnsomatic.com
http://whatismyip.org
http://icanhazip.com
http://www.whatismyip.com/automation/n09230945.asp
http://externip.com

編集、dosウィンドウに移動せずにウィンドウでip.vbsファイルを実行することもでき、小さなポップアップウィンドウに表示されます。

5
Champ

同等のPowerShellを探しているときにこのサイトで偶然見つけました。他の誰かが探しているのであれば、このコマンドを共有したいと思いました。

Invoke-WebRequest ifconfig.me/ip

詳細が必要な場合は、こちらから入手できます- http://jfrmilner.wordpress.com/2012/12/22/powershell-quick-tip-03-whats-my-external-ip-address-windows-コマンドライン/

5
jfrmilner

外部IPアドレスを取得するには、ネットワークの外部で何かを要求し、IPアドレスが「どのように見える」かを報告する必要があります。これは、結果を簡単に解析してそこからIPアドレスを取得するページにクエリを実行することにより、スクリプトを使用して行うことができますが、Windowsに組み込まれているツールで外部IPアドレスを通知することはできません。自分で作成するか、見つけてダウンロードする必要があります。

3

DynDNS のようなものを使用してDHCP IPアドレスにドメイン名を割り当て、次にnslookup ofまたはping(ルーターが応答するように構成されている場合)、ドメイン名、および抽出を実行できますそのIPアドレス。

他の唯一のWindowsユーティリティはtracerouteですが、接続する送信ゲートウェイのみが表示され、そのゲートウェイに接続しているルーターのIPアドレスは表示されません。

編集:IPアドレス文字列を抽出するために上記で少し解析する必要があり、ifconfig.meにはニーススパースレスポンスがあるため、ここにボブのスクリプトのバリアントの少し、関数は応答がないかどうかをテストし、サーバーが起動している場合にスクリプトで使用するためのすてきなクリーンIPアドレスを返すことができます。

wscript.echo WAN_IP()

function WAN_IP()
    set obj = createobject("Microsoft.XMLHTTP")
    call obj.open("get", "http://ifconfig.me/ip", false)
    obj.send()

    strresponse = obj.responsetext
    set obj = nothing

    if strresponse <> "" then
        strIP = strresponse
    else
        strIP = "Unavailable"
    end if

    WAN_IP = trim(strIP)

end function
2
Fiasco Labs

他の人がすでに言ったように、あなたは外部サービスに依存する必要があります。お勧めします http://www.externalip.net

http://api.externalip.net/ip を使用して、プレーンテキスト形式でIPを取得できます。高速で信頼性が高く、無制限に使用できます。

1
user178151

ルーターがユニバーサルプラグアンドプレイ(UPnP)をサポートしている場合は、そのIPアドレスを照会できます。

Windowsでは、WMIを使用して、およびWMICツールを使用してコマンドラインからこのような情報を照会できます。

1
Robert