it-swarm-ru.tech

Команда Windows, которая возвращает внешний IP

Есть ли команда, с помощью которой я могу найти свой внешний IP-адрес моего маршрутизатора или моего маршрутизатора NAT\DSL и т.д., Устраняя необходимость посещать whatsmyip.net или аналогичный.

53
Junaid Saeed

Для этого нет встроенной команды. Частично проблема заключается в том, что когда вы подключены к Интернету через маршрутизатор, ваше сетевое оборудование не подключается напрямую к Интернету, поэтому вашей системе не назначается конкретный IP-адрес. Возможно, в некоторых случаях у вас может быть несколько внешних IP-адресов, если вы используете обратный прокси-сервер, так как настроено много корпоративных сетей. Лучше всего было бы создать скрипт, который запрашивает whatismyip.org или пытается найти, если он уже существует.

(Как совет, whatismyip.org предпочтительнее большинства других решений, поскольку он просто возвращает ваш IP в виде обычного текста - без лишнего текста, ссылок, изображений или другого мусора. Использовать его в пользовательском скрипте было бы намного проще, чем в большинстве случаев. другие сайты IP-обнаружения.)

14
nhinkle

Вы можете использовать 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
97
jfs

возьмите свою собственную копию curlfrom 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 был создан мной)

28
akira

Создайте файл с именем 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 )

6
hyperslug

Это работает хорошо, я использую его в основном с psexec при проверке подключений клиентского компьютера.

nslookup myip.opendns.com resolver1.opendns.com
6
Antti Lagus

В 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.

И, конечно же, по мере того, как меняются сайты или меняются их результаты, вы захотите обновить их соответствующим образом. :)

5
Bradley Forney

Я сделал этот пакетный скрипт, чтобы сделать это несколько месяцев назад:

@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 .

5
paradroid

Без сторонних программ сложно работать в Windows, так как Telnet не поставляется по умолчанию, но, если он есть (XP) или включен (Windows Vista и выше), просто введите:

telnet curlmyip.com 80

экран будет мигать, и вы просто получите курсор ... Следующий тип:

GET

Заглавными буквами ... затем вы увидите заголовки, за которыми следует ваш ip (и извините, я размыл его, просто показывая, где он будет!):

enter image description here

Другие ответы здесь, очевидно, работают, но я стараюсь придерживаться вопроса о том, что можно использовать в любых окнах, без сторонних программ!

Для Windows Vista и выше вы можете легко и безопасно установить telnet с помощью Programs and features или использовать следующую команду:

pkgmgr /iu:”TelnetClient”
3
William Hilsum

Попробуй это:
Не требует установки какого-либо внешнего программного обеспечения.

@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));
}
3
Filipe YaBa Polido

Вы можете использовать ifcfg.me . он поддерживает некоторые внутренние команды, которые поставляются с окнами по умолчанию.

curl ifcfg.me
nslookup . ifcfg.me
telnet ifcfg.me
ftp ifcfg.me
finger @ifcfg.me
2
Eun

Я хотел иметь решение, которое работает для 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 дня , а в расширенной опции вы выбираете каждый час на время сразу . Также отметьте Запускать задачу как можно скорее после того, как запланированный запуск пропущен в Настройки . Под Action вы вставляете приведенный выше код выполнения.

Код PowerShell можно оптимизировать, потому что я не гуру PowerShell (мой первый раз с ним). Сейчас я проверяю, вызывается ли скрипт каждый час.

1
testing

Вот что я понял, можно использовать встроенную команду для получения публичного IP-адреса, но у вас есть доступ к Интернету.

telnet icanhazip.com

или же

telnet myip.gelma.net
1
Sam

ipchicken.com вернет ваш очевидный IP-адрес в текстовом формате, если вы сможете проанализировать возвращаемый HTML-код, извлеченный из внешнего IP-адреса вашего маршрутизатора. Кроме того, вы можете установить один из тех динамических DNS-агентов, который обновит ваш внешний IP-адрес до полного доменного имени, а затем просто выполнить nslookup на своем полном доменном имени, чтобы увидеть ваш текущий номер IP. Раньше были бесплатные, такие как DynDNS, но большинство из них теперь требуют платной подписки.

0
anthonymaw