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


13

この質問にはすでに答えがあります:

Windowsの「ipconfig」コマンドでは、マシンのイーサネットインターフェイスのパラメーターのみを表示できます(ipconfig /all引数がある場合でも)。インターフェイスに関する詳細情報を表示できますが、NATネットワーク経由で外部IPアドレスが表示されることはありません。

ipconfig / all-Windowsスクリーンショット

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

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


HTTPベースのwhat-is-my-IPサービスは、プロキシサーバーのIPを提供する場合があります。(そして、HTTPSプロキシが存在することを誰かが指摘する前に、HTTPSを透過的にプロキシすることはできません。もしあれば、それを知っているでしょう。)
billpg

回答:


11

これで、オリバーが提供するサイトを使用して、これをVBScriptで実行できます。

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

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


いいですね、うまくいきました。プログラムに挿入します。それは私の問題に対する良い解決策です。ありがとうございました。
ディオゴ

うーん、このスクリプトの4行目の1行目に「アクセス拒否」が返されています。管理者権限のコマンドラインから実行する場合でも...理由はわかりますか?
ディオゴ

@DiogoRocha理由はわかりません。Fiascoのものはおそらくより信頼性があります。wscript/ へのインターネットアクセスをブロックするファイアウォールまたは何かがある可能性もありますcscript
ボブ

10

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

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

そうは言っても、ifconfig.me/ipを使用して自分で簡単に作成できます。さて、もし持っているならcurl、あなたはすでに終わっています、もしそうでなければ:Wget / cURL alternative native to Windows?


1
ifconfig.me/ipのロードに時間がかかりました。whatismyip.orgは同一のプレーンテキストIPを提供し、はるかに高速でした。
nhinkleの

1
@nhinkleしかし、それはあなたの場所に依存するかもしれません。どちらも同じロード時間を持っているように見えますが、ifconfig.meからのping応答時間は半分です(139ms対250ms)。おそらくもっと重要なのは、サービスが可能な限り長く動作し続けることですが、実際には知る方法がありません。
ボブ

ポート転送ルールとIPv4を考慮しているルーターの外部IPアドレスには何も問題はありません。
mbx

5

自由に実行する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:に保存します)。

WindowsでDOSウィンドウを開きます(cmdを実行します

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ファイルをウィンドウで実行することもできます。これは、小さなポップアップウィンドウに表示されるだけです。


icanhazip.comの応答時間は非常に短く、ヨーロッパの中心にあるipconfig.me/ipよりも優れています。
modiX


3

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


2

DynDNSのようなものを使用してDHCP IPアドレスにドメイン名を割り当てると、ドメイン名のnslookupofまたは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

1

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

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


2
例を挙げていただけますか?これにとても興味があります。
デアホッホステープラー

1

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

http://api.externalip.net/ipを使用して、プレーンテキスト形式でIPを取得できます。高速で信頼性が高いことが証明されており、さらに無制限に使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.