ルーターの外部IPやNAT \ DSLルーターなどを検索できるコマンドがあり、whatsmyip.netなどにアクセスする必要がありません。
ルーターの外部IPやNAT \ DSLルーターなどを検索できるコマンドがあり、whatsmyip.netなどにアクセスする必要がありません。
回答:
これを行うための組み込みコマンドはありません。問題の一部は、ルーターを介してインターネットに接続している場合、ネットワークハードウェアがインターネットに直接接続されていないため、システムにIPが特に割り当てられていないことです。多くの企業ネットワークが設定されているため、リバースプロキシの背後にいる場合、場合によっては複数の外部IPを持つことも可能です。最善の策は、whatismyip.orgを照会するスクリプトを作成するか、すでに存在するかどうかを確認することです。
(ヒントとして、whatismyip.orgは、余分なテキスト、リンク、画像、またはその他のゴミを含まないプレーンテキストとしてIPを返すだけなので、他のほとんどのソリューションよりも好ましいです。他のIP検出サイト。)
HTTP要求の代わりにDNS要求を使用して、パブリックIPを見つけることができます。
C:\> nslookup myip.opendns.com. resolver1.opendns.com
resolver1.opendns.com
DNSサーバーを使用して、魔法のmyip.opendns.com.
ホスト名をIPアドレスに解決します。(注:.
ルックアップの末尾により、検索ドメインが追加されなくなり、誤った結果が生じる可能性があります。)
Unixバージョン:
$ dig +short myip.opendns.com @resolver1.opendns.com
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は私によって作成されました)
という名前のファイルを作成し、次のファイルをそのファイルに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)
数か月前にこのバッチスクリプトを作成しました。
@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が必要です。
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を常に追跡する代わりに名前を使用します。
そしてもちろん-サイトが変わるか、出力が変わると、それに応じてこれを更新する必要があります。:)
powershell.exe -noprofile -command ""
。改行をセミコロンで区切ります
(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
これを試してください:
外部ソフトウェアをインストールする必要はありません。
@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));
}
Telnetはデフォルトでは提供されないため、サードパーティのプログラムがないとWindowsで困難になりますが、ある場合(XP)またはオンになっている場合(Windows Vista以降)、単に次のように入力します。
telnet curlmyip.com 80
画面が点滅し、カーソルが表示されます...次のタイプ:
GET
大文字で...ヘッダーが表示され、続いてIPが表示されます(申し訳ありませんが、あいまいになりました。
ここでの他の答えは明らかに機能しますが、サードパーティのプログラムなしで、任意のウィンドウで使用できるものについての質問を続けようとしています!
Windows Vista Programs and features
以降の場合、を使用してtelnetを簡単に(そして安全に)インストールするか、次のコマンドを使用できます。
pkgmgr /iu:”TelnetClient”
curlmyip.com
、で動作をテストしましたcheckip.dyndns.org
。
サードパーティのツールをインストールせずに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時間ごとに呼び出されるかどうかをテストしています。