Команда Windows, возвращающая внешний IP
Есть команда, с помощью которой я могу найти свой внешний IP роутер или маршрутизатор NAT\DSL и т.д., что избавляет меня от необходимости посещать whatsmyip.net или что-то подобное.
Есть команда, с помощью которой я могу найти свой внешний IP роутер или маршрутизатор NAT\DSL и т.д., что избавляет меня от необходимости посещать whatsmyip.net или что-то подобное.
Вы можете использовать DNS-запрос вместо HTTP-запроса, чтобы узнать ваш публичный IP:
C:\> nslookup myip.opendns.com. resolver1.opendns.com
Он использует сервер resolver1.opendns.com
dns для преобразования магического имени хоста myip.opendns.com.
в your ip-адрес. (Замечание: трейлинг .
в поиске предотвращает добавление поисковых доменов, что может привести к неправильным результатам)
версия для Unix:
$ dig +short myip.opendns.com @resolver1.opendns.com
возьмите свою собственную копию curl
из 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-адрес. Возможно, у вас даже может быть несколько внешних IP адресов в некоторых случаях, если вы находитесь за обратным прокси, поскольку многие корпоративные сети настроены. Лучшим вариантом может быть создание скрипта, который запрашивает whatismyip.org , или пытается найти, существует ли он уже.
(Как совет, whatismyip.org предпочтительнее большинства других решений, так как он просто возвращает ваш IP в виде простого текста - без лишнего текста, ссылок, изображений или другого мусора. Его гораздо проще использовать в пользовательском скрипте, чем большинство других сайтов IP-обнаружения).
Это хорошо работает, я использую его в основном с psexec при проверке подключений клиентских компьютеров.
nslookup myip.opendns.com resolver1.opendns.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 ]&003).
В Powershell 3.0 (по умолчанию Windows 7 2.0) можно использовать Invoke-WebRequest
For IPv4:
$tmp =Invoke-WebRequest -URI http://myip.dnsomatic.com/
$tmp.Content
For IPv6:
$tmp =Invoke-WebRequest -URI http://myexternalip.com/raw
$tmp.Content
Это даст вам переменную для работы, если у вас есть что-то определенное, с чем вы хотите работать. На самом деле я использую эту переменную для создания сценария для периодической загрузки динамического IP моего роутера, выполнения другого тестового подключения машины к нему через регулярные интервалы времени, а затем обновления DNS с последним IP, если он изменился, чтобы я мог получить доступ к своей передаче откуда угодно, используя имя вместо того, чтобы постоянно преследовать 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 адрес в буфер обмена.
Вам нужно cURL .
Без сторонних программ сложно в Windows, так как Telnet не поставляется по умолчанию, но если он там (XP) или включен (Windows Vista и выше), просто введите:
telnet curlmyip.com 80
экран будет мигать, и вы просто получите курсор… Следующий тип:
GET
Прописными буквами… вы увидите заголовки, затем ваш ip (и простите, что я его размыл, просто показываю, где он будет! ):
Очевидно, что другие ответы здесь работают, но я стараюсь придерживаться вопроса о том, что можно использовать в любых окнах, без сторонних программ!
Для Windows Vista и выше, вы можете легко (и безопасно) установить telnet через Programs and features
, или используйте следующую команду:
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));
}
ipchicken.com вернет ваш явный IP-адрес в текстовом формате, если вы сможете разобрать возвращаемый HTML, который вы извлекаете из внешнего IP-адреса вашего маршрутизатора. Или же вы можете установить один из динамических DNS агентов, который обновит ваш внешний IP на FQDN, а затем просто выполнить nslookup на вашем FQDN, чтобы увидеть ваш текущий IP номер. Раньше существовали бесплатные агенты, такие как DynDNS, но теперь для большинства из них требуется платная подписка.