Whatsmyip.netなどを訪問する必要性を排除して、私が私のルーターまたは私のNAT\DSLルーターなどの私の外部IPを見つけることができるコマンドがありますか。
これを行うための組み込みコマンドはありません。問題の一部は、ルータを介してインターネットに接続している場合、ネットワークハードウェアがインターネットに直接接続されていないため、システムに特にIPが割り当てられていないことです。多くの企業ネットワークが設定されているため、リバースプロキシの背後にいる場合は、場合によっては複数の外部IPがある可能性もあります。あなたの最善の策は、 whatismyip.org をクエリするスクリプトを作成するか、またはすでに存在するかどうかを探そうとすることでしょう。
(ヒントとして、whatismyip.orgはあなたのIPアドレスをプレーンテキストとして返すだけなので、他のほとんどの解決策よりも望ましいです。余分なテキスト、リンク、画像、その他のゴミはありません。他のIP検出サイト)
あなたのパブリック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
自分のcurl
from 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 は私が作成したものです)
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 )
これはうまく機能します。クライアントコンピュータの接続を検査するときに、psexecで主に使用します。
nslookup myip.opendns.com resolver1.opendns.com
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%
をセットします。
単純な方法:
今、私は代わりにこれをやる:
curl icanhazip.com
または...
curl icanhazip.com | clip
...現在のパブリックIPアドレスをクリップボードに入れます。
cURL が必要です。
Telnetはデフォルトでは提供されないため、サードパーティ製プログラムがないとWindows上では困難ですが、存在する場合(XP)またはオンになっている場合(Windows Vista以降)は、単に次のように入力します。
telnet curlmyip.com 80
画面が点滅し、カーソルが表示されます。
GET
大文字で...あなたはそれからあなたのipが続くヘッダーを見るでしょう(そしてそれがどこにあるかを示すだけで私はそれをぼかして申し訳ありません!):
ここでの他の答えは明らかにうまくいきますが、私はサードパーティ製のプログラムなしで、どんなウィンドウでも使用できるものについての質問に続けようとしています!
Windows Vista以降の場合、Programs and features
を使用してtelnetを簡単に(そして安全に)インストールすることができます。または、次のコマンドを使用することもできます。
pkgmgr /iu:”TelnetClient”
これを試して:
どんな種類の外部ソフトウェアもインストールする必要はありません。
@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));
}
ifcfg.me を使うことができます。デフォルトでWindowsに付属するいくつかの内部コマンドをサポートしています。
curl ifcfg.me
nslookup . ifcfg.me
telnet ifcfg.me
ftp ifcfg.me
finger @ifcfg.me
私はサードパーティ製のツールをインストールせずに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のコードを最適化することができます。スクリプトが毎時呼び出されるかどうか今テストしています。
これが私が考え出したものです。パブリックIPアドレスを取得するために組み込みコマンドを使用することは可能ですが、インターネットにアクセスすることはできます。
telnet icanhazip.com
または
telnet myip.gelma.net
ルータの外部IPを抽出した戻りHTMLを解析できる場合、ipchicken.comは見かけのIPアドレスをテキスト形式で返します。あるいは、見かけの外部IPをFQDNに更新する動的DNSエージェントのいずれかをインストールしてから、FQDNにnslookupを実行して現在のIP番号を確認することもできます。 DynDNSのような無料のものがありましたが、それらのほとんどは今有料の購読アカウントを必要とします。