web-dev-qa-db-ja.com

外部IPを返すWindowsコマンド

Whatsmyip.netなどを訪問する必要性を排除して、私が私のルーターまたは私のNAT\DSLルーターなどの私の外部IPを見つけることができるコマンドがありますか。

54
Junaid Saeed

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

(ヒントとして、whatismyip.orgはあなたのIPアドレスをプレーンテキストとして返すだけなので、他のほとんどの解決策よりも望ましいです。余分なテキスト、リンク、画像、その他のゴミはありません。他のIP検出サイト)

14
nhinkle

あなたのパブリックIPを見つけるためにHTTPリクエストの代わりにDNSリクエストを使うことができます:

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

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

Unix版:

$ Dig +short myip.opendns.com @resolver1.opendns.com
101
jfs

自分のcurlfrom http://curl.haxx.se/download.html を自分でコピーして

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

またはPowerShellを使用します。

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

(免責事項: http://myexternalip.com は私が作成したものです)

29
akira

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 が述べたように 、IPのみを返し、HTML +広告などを返さないサイトを選択するのが最善です。

(出典:以前は http://externip.com/about

6
hyperslug

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

nslookup myip.opendns.com resolver1.opendns.com
6
Antti Lagus

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を追いかける必要はなく、名前を使用する。

そしてもちろん - サイトが変わったり出力が変わったりしたら、それに応じてこれを更新したいでしょう。 :)

5
Bradley Forney

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

@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 が必要です。

5
paradroid

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

telnet curlmyip.com 80

画面が点滅し、カーソルが表示されます。

GET

大文字で...あなたはそれからあなたのipが続くヘッダーを見るでしょう(そしてそれがどこにあるかを示すだけで私はそれをぼかして申し訳ありません!):

enter image description here

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

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

pkgmgr /iu:”TelnetClient”
3
William Hilsum

これを試して:
どんな種類の外部ソフトウェアもインストールする必要はありません。

@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

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

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

私はサードパーティ製のツールをインストールせずにWindowsで動作する解決策を望みました。そこで私は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日ごとに毎日を使用し、高度なオプションでは、{1時間ごとに1時間ごと)すぐに設定スケジュールされた開始が失敗した後できるだけ早くタスクを実行するも確認してください。 アクションの下に上記の実行コードを貼り付けます。

私はPowerShellの教祖ではないので(私は初めて)、PowerShellのコードを最適化することができます。スクリプトが毎時呼び出されるかどうか今テストしています。

1
testing

これが私が考え出したものです。パブリックIPアドレスを取得するために組み込みコマンドを使用することは可能ですが、インターネットにアクセスすることはできます。

telnet icanhazip.com

または

telnet myip.gelma.net
1
Sam

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

0
anthonymaw