Есть ли команда, с помощью которой я могу найти свой внешний IP-адрес моего маршрутизатора или моего маршрутизатора NAT \ DSL и т. Д., Устраняя необходимость посещать whatsmyip.net или аналогичный.
Есть ли команда, с помощью которой я могу найти свой внешний IP-адрес моего маршрутизатора или моего маршрутизатора NAT \ DSL и т. Д., Устраняя необходимость посещать whatsmyip.net или аналогичный.
Ответы:
Для этого нет встроенной команды. Частично проблема заключается в том, что когда вы подключены к Интернету через маршрутизатор, ваше сетевое оборудование не подключается напрямую к Интернету, поэтому вашей системе не назначается конкретный IP-адрес. Возможно, в некоторых случаях у вас может быть несколько внешних IP-адресов, если вы используете обратный прокси-сервер, так как настроено много корпоративных сетей. Лучше всего было бы создать скрипт, который запрашивает whatismyip.org , или попытаться найти, если он уже существует.
(Как подсказка, whatismyip.org предпочтительнее большинства других решений, поскольку он просто возвращает ваш IP в виде обычного текста - без лишнего текста, ссылок, изображений или другого мусора. Было бы намного проще использовать пользовательский скрипт, чем большинство другие сайты IP-обнаружения.)
Вы можете использовать DNS-запрос вместо HTTP-запроса, чтобы узнать ваш публичный 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
возьмите свою собственную копию 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 был создан мной)
Это работает хорошо, я использую его в основном с 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 )
Я сделал этот пакетный скрипт, чтобы сделать это несколько месяцев назад:
@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-адреса моего роутера, для регулярной проверки соединения с ним другого компьютера, а затем для обновления DNS на последний IP-адрес, если он изменился, чтобы я мог получить доступ к своему устройству из любой точки используя имя вместо того, чтобы постоянно преследовать 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));
}
Без сторонних программ сложно работать в Windows, так как Telnet не поставляется по умолчанию, но, если он есть (XP) или включен (Windows Vista и выше), просто введите:
telnet curlmyip.com 80
экран будет мигать, и вы просто получите курсор ... Следующий тип:
GET
Заглавными буквами ... затем вы увидите заголовки, за которыми следует ваш ip (и извините, я размыл его, просто показывая, где он будет!):
Другие ответы здесь, очевидно, работают, но я стараюсь придерживаться вопроса о том, что можно использовать в любых окнах, без сторонних программ!
Для Windows Vista и выше вы можете легко (и безопасно) установить telnet с Programs and features
помощью следующей команды:
pkgmgr /iu:”TelnetClient”
curlmyip.com
, но проверено работает с checkip.dyndns.org
.
Я хотел иметь решение, которое работает для 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
В планировщике задач вы создаете новую задачу. В Trigger вы используете настройку ежедневно для каждого 1 дня, а в расширенной опции вы выбираете каждый час на время немедленно . Также установите флажок Запускать задачу как можно скорее после того, как запланированный запуск пропущен в Настройках . Под действием вы вставляете приведенный выше код выполнения.
Код PowerShell можно оптимизировать, потому что я не гуру PowerShell (мой первый раз с ним). Сейчас я проверяю, вызывается ли скрипт каждый час.
Вот что я понял, можно использовать встроенную команду для получения публичного IP-адреса, но у вас есть доступ к Интернету.
telnet icanhazip.com
или же
telnet myip.gelma.net
icanhazip.com
у меня это не сработает, а другой не выполняет IPv6 должным образом. :)
ipchicken.com вернет ваш очевидный IP-адрес в текстовом формате, если вы сможете проанализировать возвращаемый HTML-код, извлеченный из внешнего IP-адреса вашего маршрутизатора. Кроме того, вы можете установить один из тех динамических DNS-агентов, который обновит ваш внешний IP-адрес до полного доменного имени, а затем просто выполнить nslookup на своем полном доменном имени, чтобы увидеть ваш текущий номер IP. Раньше были бесплатные, такие как DynDNS, но большинство из них теперь требуют платной подписки.