あなたの公開IPを見つけるためにHTTPリクエストの代わりにDNSリクエストを使用することができます:
C:\> nslookup myip.opendns.com. resolver1.opendns.com
それは、yourのIPアドレスに魔法のようなresolver1.opendns.com
ホスト名を解決するためにmyip.opendns.com.
dnsサーバーを使用しています。(注意: 検索の最後の .
は検索ドメインが付加されるのを防ぎます。)
Unix バージョン:
$ dig +short myip.opendns.com @resolver1.opendns.com
http://curl.haxx.se/download.html ](http://curl.haxx.se/download.html) から curl
のあなた自身のコピーをつかみ、そしてちょうど
curl "http://myexternalip.com/raw"
または powershell を使用して下さい:
$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")
(免責事項: http://myexternalip.com は私によって作成されました)
これを行うためのビルトインコマンドはありません。問題の一部は、ルータを介してインターネットに接続されている場合、ネットワークハードウェアが直接インターネットに接続されていないので、システムは特にIPを割り当てられていないということです。多くの企業ネットワークが設定されているように、リバースプロキシの背後にある場合、それはあなたも、いくつかのケースで複数の外部IPを持っている可能性があります。あなたの最善の策は、 whatismyip.org を問い合わせるスクリプトを作成することかもしれません, または1つがすでに存在するかどうかを見つけようとしている.
(先端として, whatismyip.orgは、他のほとんどのソリューションよりも好ましいです, それだけであなたのIPをプレーンテキストとして返すので - 余計なテキスト、リンク、画像や他のゴミはありません. 他のIP検出サイトのほとんどよりも、カスタムスクリプトで使用する方がはるかに簡単です)
これはうまく動作します。私はクライアントコンピュータの接続を検査するときに、主に psexec を使っています。
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
を使用して実行します。のように:
(ソース: 元 http://externip.com/about )
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を追いかけることを持っているのではなく、名前を使用して. :)
私は数ヶ月前にそれを行うためにこのバッチスクリプトを作成しました:
@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%
。
SIMPLER METHOD:
今、私はちょうど代わりにこれを行います:
curl icanhazip.com
または…
curl icanhazip.com | clip
…クリップボードに現在のパブリックIPアドレスを取得するには。
サードパーティのプログラムなしでは、Telnetはデフォルトでは供給されていないので、Windows上では難しいですが、もしそれがそこにある場合(XP)または(Windows Vista以上)をオンにして、単にタイプ:&002&002&001&002&002&002画面が点滅し、あなただけのカーソルを取得します… 次のタイプ:
telnet curlmyip.com 80
大文字で…あなたはその後、ヘッダーが表示され、その後、あなたのIPが表示されます(と私はそれをぼかして申し訳ありませんが、それがどこにあるかを示しているだけ! ):
他の回答は明らかにここでは動作しますが、私はサードパーティのプログラムなしで、どのWindowsでも使用できるものについての質問を維持しようとしています!
Windows Vista以上では、Programs and features
を通して簡単に(そして安全に)telnetをインストールすることができます、または、次のコマンドを使用してください:
GET
試してみてください: 外部ソフトウェアのインストールは必要ありません。
私は、サードパーティのツールをインストールすることなく、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
タスクスケジューラで新しい仕事を作成する。Triggerではdaily for every 1 dayの設定を使い、advanced optionではevery hour for the duration of immediatelyを選択しています。また、設定の「スケジュールされた開始が失敗した後、できるだけ早くタスクを実行する」にチェックを入れてください。アクションの下に、上記の実行コードを貼り付けます。今は、スクリプトが1時間ごとに呼び出されるかどうかをテストしています。
ルータの外部IPを抽出して返すHTMLを解析できれば、ipchicken.comは見かけのIPアドレスをテキスト形式で返してくれます。別の方法として、見かけの外部IPをFQDNに更新するダイナミックDNSエージェントをインストールして、現在のIP番号を見るためにFQDNでnslookupを行うこともできます。以前はDynDNSのような無料のものもありましたが、今ではほとんどのものが有料のサブスクリプションアカウントを必要としています。