13

Команда Windows "ipconfig" может показывать только параметры интерфейсов Ethernet с моего компьютера (даже с аргументом ipconfig /all ). Он может отображать подробную информацию об интерфейсе, но никогда не будет отображать мой внешний IP-адрес в сети NAT .

ipconfig/all - скриншот Windows

Однако есть несколько веб-сайтов, таких как «Какой у меня IP-адрес», которые могут получить и показать мой внешний IP-адрес. Вот мне и интересно, возможно ли получить это значение извне? Должен ли я ожидать, что есть какой-то способ получить эту информацию из командной строки на моем локальном компьютере ...

Мне нужно получить это значение для входа в приложение, которое я делаю с VBScript. Есть ли способ сделать это из cmd на Windows?

8 ответов8

11

Теперь, используя предоставленный Оливер сайт, это можно сделать в VBScript.

Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://ifconfig.me/ip", False
o.send
WScript.StdOut.Write o.responseText

Есть аналогичный метод для PowerShell.

10

Проблема в том, что это не ваш IP-адрес. Это IP-адрес вашего роутера.

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

Тем не менее, вы можете сделать это легко с помощью ifconfig.me/ip. Теперь, если у вас есть curl , вы уже сделали, если нет: Wget/cURL альтернатива для Windows?

5

Создайте сценарий VB для запуска на досуге.

Введите это в текстовый файл:

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

Закройте текстовый файл и переименуйте его в ip.vbs (для этого примера сохраните его в C:)

В окнах откройте окно DOS (запустить CMD) (ха!Я только что понял, если вы поменяете местами, что он станет запускать DMC!)

Убедитесь, что вы находитесь в c:/ (если нет, введите c: & нажмите enter, затем cd .. & введите несколько раз, пока не увидите C:>)

В командной строке DOS введите:

cscript ip.vbs

и вы сразу увидите свой внешний IP.

Если вы поместите файл vbs в ключ usb или что-то еще (и не забудьте запустить cscript ip.vbs в командной строке dos, но убедитесь, что вы находитесь в том же каталоге, что и файл ip.vbs), вы можете взять его с собой. куда бы вы ни пошли и запустили файл .vbs на любом компьютере, чтобы увидеть их внешний IP.

Еще одно примечание: строка с адресом для icanhazip.com может быть изменена на любое из следующего:

http://myip.dnsomatic.com
http://whatismyip.org
http://icanhazip.com
http://www.whatismyip.com/automation/n09230945.asp
http://externip.com

Отредактируйте, вы также можете запустить файл ip.vbs в Windows, не переходя в окно DOS, и он просто появится в небольшом всплывающем окне.

4

Я наткнулся на этот сайт, когда искал эквивалент PowerShell, и подумал, что поделюсь этой командой, если кто-то еще будет искать:

Invoke-WebRequest ifconfig.me/ip

Более подробная информация доступна здесь, если они вам нужны - http://jfrmilner.wordpress.com/2012/12/22/powershell-quick-tip-03-whats-my-external-ip-address-windows-command-line/

3

Чтобы получить внешний IP-адрес, вам нужно спросить что-то вне сети и попросить его сообщить, какой ваш IP-адрес "кажется" ему. Это можно сделать с помощью сценариев, выполнив запрос к странице, с которой легко проанализировать результат, и получая по ней IP-адрес, но в Windows нет встроенного инструмента, который бы мог просто сказать вам, каков ваш внешний IP-адрес. Вам нужно будет написать самому или найти и скачать его.

2

Используя что-то вроде DynDNS для назначения вашего IP-адреса DHCP доменному имени, вы можете затем выполнить nslookup или ping (если ваш маршрутизатор настроен на ответ) вашего доменного имени и извлечь из него IP-адрес.

Единственной другой утилитой Windows является traceroute , но она будет показывать только исходящий шлюз, к которому вы подключаетесь, а не IP-адрес вашего маршрутизатора, который подключается к этому шлюзу.

Редактировать: поскольку для извлечения строки IP-адреса требуется немного синтаксического анализа вышеизложенного, а ifconfig.me имеет хороший разреженный ответ, здесь приведен небольшой вариант сценария Боба, функция может проверить отсутствие ответа и вернуть хороший чистый IP-адрес для использования в скрипте, если сервер работает.

wscript.echo WAN_IP()

function WAN_IP()
    set obj = createobject("Microsoft.XMLHTTP")
    call obj.open("get", "http://ifconfig.me/ip", false)
    obj.send()

    strresponse = obj.responsetext
    set obj = nothing

    if strresponse <> "" then
        strIP = strresponse
    else
        strIP = "Unavailable"
    end if

    WAN_IP = trim(strIP)

end function
1

Как уже говорили другие, вам нужно полагаться на внешний сервис. Я бы порекомендовал http://www.externalip.net

Вы можете использовать http://api.externalip.net/ip, чтобы получить IP в текстовом формате. Он оказался быстрым и надежным, плюс его неограниченное использование.

1

Если ваш маршрутизатор поддерживает Universal Plug & Play (UPnP), вы можете запросить его IP-адрес (а).

В Windows вы можете запросить такую информацию с помощью WMI и из командной строки с помощью инструмента WMIC.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .