外部IPを返すWindowsコマンド


回答:


14

これを行うための組み込みコマンドはありません。問題の一部は、ルーターを介してインターネットに接続している場合、ネットワークハードウェアがインターネットに直接接続されていないため、システムにIPが特に割り当てられていないことです。多くの企業ネットワークが設定されているため、リバースプロキシの背後にいる場合、場合によっては複数の外部IPを持つことも可能です。最善の策はwhatismyip.orgを照会するスクリプトを作成するか、すでに存在するかどうかを確認することです。

(ヒントとして、whatismyip.orgは、余分なテキスト、リンク、画像、またはその他のゴミを含まないプレーンテキストとしてIPを返すだけなので、他のほとんどのソリューションよりも好ましいです。他のIP検出サイト。)


6
残念ながら、彼らはwhatismyip.orgを変更しました。IPアドレスがイメージとして返されるようになり、スクリプト作成にはほとんど役に立たなくなりました。下記のWebサイト「icanhazip.com」機能します。
onnodb

Yandexは動作しています。以下に掲載されているスクリプトを確認してください。
フィリペYaBaポリド


107

HTTP要求の代わりにDNS要求を使用して、パブリックIPを見つけることができます。

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

resolver1.opendns.comDNSサーバーを使用して、魔法のmyip.opendns.com.ホスト名をIPアドレスに解決します。(注:.ルックアップの末尾により、検索ドメインが追加されなくなり、誤った結果が生じる可能性があります。)

Unixバージョン:

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

1
魅力のように働いた。
BK 14年

素晴らしい、何もインストールしなくても動作します。
エリコス

2017年11月、Windows 10ではもう機能しませんでした。BradleyForneyからのPowerShellの回答は機能します。
ジェイソン

私のためにまだ働いていました(Windows 10、2017年12月)。非常に賢い@ jfs、OpenDNSはこれをどこでどのように発見したのですか?
アレックスKeySmith

4
これは実際のコマンドを提供し、機能するため、受け入れられた答えである必要があります。受け入れられた答えは、コマンドがないことを示し(これは誤りであることが証明されています)、実際にさらなる指示を与えることなく、スクリプトの使用を提案します。
Cyber​​Claw

30

http://curl.haxx.se/download.htmlcurlから独自のコピーを取得してから、

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

またはpowershellを使用します:

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

(免責事項:http : //myexternalip.comは私によって作成されました)


これはIPv6アドレスのみを提供します。IPv4アドレスを取得する方法はありますか?
tim11g

私は読み続けて、PowershellのIPv4 / IPv6の例を見つけました。このようなCURLではIPv4を取得することが可能である「C:>カール」myip.dnsomatic.com
tim11g

7

これはうまく機能します。クライアントコンピューターの接続を検査するときに、主にpsexecで使用します。

nslookup myip.opendns.com resolver1.opendns.com

6

という名前のファイルを作成し、次のファイルをそのファイルにip.vbsコピーします。

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

を使用して実行

C:\>cscript ip.vbs

nhinkleが指摘したように、HTML +広告などではなくIPのみを返すサイトを選択するのが最善です:

(ソース:以前はhttp://externip.com/about


5

数か月前にこのバッチスクリプトを作成しました。

@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

クリップボードにIPアドレスを入力するオプションが提供され、環境変数-が設定されます%PublicIP%


簡易メソッド:

今、私は代わりにこれをするだけです:

curl icanhazip.com

または...

curl icanhazip.com | clip

...現在のパブリックIPアドレスをクリップボードに取得します。

cURLが必要です。


1
paradroidのスクリプトは正常に機能しましたが、whatsmyipはWebページをautomation.whatismyip.com/n09230945.aspに移動しました。これに変更すると、完璧に機能します。

5

Powershell 3.0(Windows 7のデフォルトは2.0)を使用すると、 Invoke-WebRequest

IPv4の場合:

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

IPv6の場合:

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

これにより、特定の何かを実行したい場合に使用する変数が提供されます。実際にこれを使用してスクリプトを作成し、ルーターの動的IPを定期的にアップロードし、別のマシンで定期的に通信をテストし、変更された場合は最新のIPでDNSを更新して、どこからでもギアにアクセスできるようにしますIPを常に追跡する代わりに名前を使用します。

そしてもちろん-サイトが変わるか、出力が変わると、それに応じてこれを更新する必要があります。:)


このアプローチは、Windows 10でうまく機能しました。1行のコマンドが必要だったので、上記を引用符で囲んで実行しましたpowershell.exe -noprofile -command ""。改行をセミコロンで区切ります
ジェイソン

1
一発ギャグ?ちょうど実行(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
メロス

3

これを試してください:
外部ソフトウェアをインストールする必要はありません。

@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

Telnetはデフォルトでは提供されないため、サードパーティのプログラムがないとWindowsで困難になりますが、ある場合(XP)またはオンになっている場合(Windows Vista以降)、単に次のように入力します。

telnet curlmyip.com 80

画面が点滅し、カーソルが表示されます...次のタイプ:

GET

大文字で...ヘッダーが表示され、続いてIPが表示されます(申し訳ありませんが、あいまいになりました。

ここに画像の説明を入力してください

ここでの他の答えは明らかに機能しますが、サードパーティのプログラムなしで、任意のウィンドウで使用できるものについての質問を続けようとしています!

Windows Vista Programs and features以降の場合、を使用してtelnetを簡単に(そして安全に)インストールするか、次のコマンドを使用できます。

pkgmgr /iu:”TelnetClient”

それ(そしてほとんどの答え!)は、ソースWebサイトが正確にあなたのIPアドレスを拾うと仮定しています-プロキシのいくつかのタイプはこれを台無しにします。これが原因でルーターからIPアドレスを取得していました。興味深いことに、これらの場合、非標準のポートを使用するWebサイトが正常に機能する場合があります。
ジャーニーマンオタク

では動作しませんがcurlmyip.com、で動作をテストしましたcheckip.dyndns.org
ソパラホデアリエレス14

2

ifcfg.meを使用できます。デフォルトでウィンドウに付属するいくつかの内部コマンドをサポートしています。

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

1

サードパーティのツールをインストールせずにWindowsで動作するソリューションが必要でした。そこで、1 時間ごとにスクリプトを実行するpowershellオプションを選択しました。

このスクリプトはメモ帳で作成します

$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"

getIP.ps1どこかに保存します。このスクリプトは、PowerShellで直接呼び出すか、タスクプランナーを使用できます。これは実行するためのコマンドです:

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

タスクスケジューラで、新しいタスクを作成します。で、トリガーあなたは、設定を使用する すべての1日のために毎日、高度なオプションでお選びいただけすぐの期間中、すべての時間を。また、設定スケジュールされた開始を逃し後、できるだけ早くタスクを実行するをチェックします。[ アクション]の下に、上記の実行コードを貼り付けます。

私はPowerShellの第一人者ではないので、PowerShellコードを最適化できます。現在、スクリプトが1時間ごとに呼び出されるかどうかをテストしています。


1

ここに私が理解したものがあります、組み込みのコマンドを使用してパブリックIPアドレスを取得することは可能ですが、あなたはインターネットにアクセスできます

telnet icanhazip.com

または

telnet myip.gelma.net

良いキャッチ!がはicanhazip.com私のために動作しませんし、他の1は、IPv6に適切に行いません。:)
ダニエルB

0

ルーターの外部IPを抽出して返されるHTMLを解析できる場合、ipchicken.comは見かけのIPアドレスをテキスト形式で返します。または、動的IPエージェントをインストールして、見かけ上の外部IPをFQDNに更新し、FQDNでnslookupを実行して現在のIP番号を確認することもできます。以前はDynDNSのような無料のものがありましたが、それらのほとんどは有料のサブスクリプションアカウントが必要になりました。

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