Як отримати мою зовнішню IP-адресу (над NAT) з командного рядка Windows? [дублікат]


13

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

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

Однак є кілька веб-сайтів, таких як "Яка моя IP-адреса", яка може отримати та показати мою зовнішню IP-адресу. Тож мені цікаво, чи можна отримати це значення зовні? Чи слід очікувати, що є можливість отримати цю інформацію з командного рядка на моїй локальній машині ...

Мені потрібно отримати це значення для входу в програму, яку я роблю з VBScript . Чи є спосіб це зробити з cmdWindows?


Зауважте, що послуги, що базуються на протоколі HTTP, можуть надавати вам IP проксі-сервера. (І перш ніж хтось зазначить, що проксі-сервери HTTPS існують, ви не можете прозоро проксі HTTPS. Якщо у вас є, ви це знатимете.)
billpg

Відповіді:


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.


Приємно, це спрацювало. Я вставлю його у свою програму. Це гарне рішення для моєї проблеми. Дякую.
Діого

Хм, він повертає "Acess відмовлено" у рядку 4, символ 1 для цього сценарію. Навіть запускаючи його з командного рядка прав адміністратора ... Чи знаєте ви чому?
Діого

@DiogoRocha Я не знаю чому. Можливо, один з фіаско є більш надійним. Також можливо, у вас є брандмауер або щось блокує доступ до Інтернету wscript/ cscript.
Боб

10

Проблема в тому, що це не ваша IP-адреса. Це IP-адреса вашого маршрутизатора.

Таким чином, ви ніколи не зможете отримати його, не пройшовши маршрутизатор. І найпростіший спосіб - просто змусити маршрутизатор отримати веб-сайт для вас (як ви вже помітили). Оскільки маршрутизатор використовуватиме свою IP-адресу для отримання цього сайту.

Зважаючи на це, ви можете спростити себе, використовуючи ifconfig.me/ip . Тепер, якщо у вас є curl, ви вже закінчили, якщо ні: Wget / cURL альтернатива рідній для Windows?


1
ifconfig.me/ip завантажувався тривалий час. whatismyip.org дає вам однаковий IP-текст із звичайним текстом і був набагато швидшим.
nhinkle

1
@nhinkle Однак це може залежати від вашого місцезнаходження. Здається, вони мають однаковий час завантаження для мене, але час відгуку від ifconfig.me наполовину (139 мс проти 250 мс). Що, мабуть, важливіше - це те, що сервіс залишається максимально довгим, але ми насправді не можемо знати.
Боб

З зовнішніми адресами IP мого маршрутизатора немає нічого поганого, враховуючи правила переадресації портів та IPv4.
mbx

5

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

Введіть це у файл txt:

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

Закрийте файл txt і перейменуйте його на ip.vbs (збережіть його на C: для цього прикладу)

У Windows відкрийте вікно 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, не переходячи до вікна дос, і він просто з’явиться у невеликому спливаючому вікні.


icanhazip.com має дуже короткий час відгуку, який кращий, ніж ipconfig.me/ip тут, у центрі Європи.
Мартін Браун


3

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


2

Використовуючи щось на зразок DynDNS для присвоєння IP-адреси DHCP доменному імені, ви можете зробити nslookupабо дозволити пінг (якщо ваш маршрутизатор налаштований відповідати), ваше доменне ім'я та витягнути з нього 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

Якщо ваш маршрутизатор підтримує Universal plug & Play (UPnP), ви можете запитати його IP-адреси.

У Windows ви можете запитувати таку інформацію за допомогою WMI та з командного рядка за допомогою інструменту WMIC.


2
Чи можете ви навести приклад? Мене це дуже зацікавить.
Der Hochstapler

1

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

Ви можете використовувати http://api.externalip.net/ip, щоб отримати ip у простому текстовому форматі. Він виявився швидким і надійним, плюс його необмежене використання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.