Команда Windows, яка повертає зовнішній IP


58

Чи існує команда, за допомогою якої я можу знайти свій зовнішній IP свого маршрутизатора або мого NAT \ DSL маршрутизатора тощо, усуваючи необхідність відвідувати whatsmyip.net або подібне.


Відповіді:


14

Для цього немає вбудованої команди. Частина проблеми полягає в тому, що коли ви підключені до Інтернету через маршрутизатор, ваше мережеве обладнання безпосередньо не підключено до Інтернету, тому вашій системі спеціально не призначено IP-адресу. Можливо, у деяких випадках навіть у вас є кілька зовнішніх IP-адрес, якщо ви стоїте за зворотним проксі, оскільки налаштовано багато корпоративних мереж. Вашою найкращою ставкою може бути створення сценарію, який запитує whatismyip.org , або намагається знайти, чи існує вже такий.

(Як підказка, whatismyip.org вважає за краще більшість інших рішень, оскільки він просто повертає ваш IP-код у вигляді простого тексту - не зайвий текст, посилання, зображення чи інший сміття. Це було б набагато простіше у користувацькому сценарії, ніж більшість з інші сайти виявлення IP-адрес.)


6
Вони, на жаль, змінили whatismyip.org; IP-адреса тепер повертається як зображення , що робить його майже марним для сценаріїв. Веб-сайт "icanhazip.com", згаданий нижче , працює.
onnodb

Яндекс працює, перевірте сценарій, розміщений нижче.
Філіпе ЯБа Полідо

Робоча командна команда знизу superuser.com/a/722397/216374
PsychoData

107

Ви можете використовувати запит DNS замість HTTP-запиту, щоб дізнатися свій загальнодоступний IP-адресу:

C:\> nslookup myip.opendns.com. resolver1.opendns.com

Він використовує resolver1.opendns.comdns-сервер для вирішення магічного myip.opendns.com.імені хоста до вашої ip-адреси. (Примітка: трейлінг .у пошуку не дозволяє додавати пошукові домени, що може дати неправильні результати.)

Версія Unix:

$ dig +short myip.opendns.com @resolver1.opendns.com

1
Працював як шарм.
BK

блискуче, працює і без установки нічого.
ericosg

Більше не працював для мене в листопаді 2017 року на Windows 10. Відповідь PowerShell від Bradley Forney працює.
Джейсон

Для мене все ще працювали (Windows 10, грудень 2017). Дуже розумний @jfs, чи OpenDNS десь це задокументував, як ти це виявив?
Alex KeySmith

4
Це має бути прийнятою відповіддю, оскільки вона дає фактичну команду, і вона працює. Прийнята відповідь говорить про відсутність команди (яка виявляється помилковою), і пропонує використовувати сценарій, не даючи дійсного подальшого вказівки.
CyberClaw

30

візьміть власну копію curlз http://curl.haxx.se/download.html, а потім просто

curl "http://myexternalip.com/raw"

або скористайтеся повноваженнями:

$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")

(відмова від відповідальності: http://myexternalip.com створена мною)


Це лише IPv6-адреса. Чи є спосіб отримати адресу IPv4?
tim11g

Я постійно читав і знайшов приклади IPv4 / IPv6 нижче для Powershell. Можна отримати IPv4 за допомогою CURL на кшталт цього "C:> curl" myip.dnsomatic.com "
tim11g

7

Це чудово працює, я використовую його в основному з psexec під час перевірки підключень клієнтського комп'ютера.

nslookup myip.opendns.com resolver1.opendns.com

6

Створіть файл з назвою 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 )


5

Я зробив цей пакетний сценарій, щоб зробити це кілька місяців тому:

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


1
Сценарій від paradroid працював чудово, але Whatsmyip перемістив веб-сторінку до автоматизації.whatismyip.com/ n09230945.asp Якщо ви зміните це, він працює ідеально.

5

З 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-адресу.

І звичайно - по мірі зміни сайтів або їх результатів ви хочете оновити це відповідно. :)


Такий підхід для мене чудово працював у Windows 10. Мені потрібна була однорядкова команда, тому після запуску цитати виконував вище powershell.exe -noprofile -command "". Розділіть перерву рядків крапкою з комою ...
Джейсон

1
Онелінер? Просто бігайте(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
merosss

3

Спробуйте це:
не потрібне встановлення зовнішнього програмного забезпечення.

@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

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

telnet curlmyip.com 80

екран спалахне, і ви просто отримаєте курсор ... Наступний тип:

GET

Великими літерами ... ви побачите заголовки, а потім ваш ip (і вибачте, що я розмив його, просто показуючи, де це буде!):

введіть тут опис зображення

Інші відповіді тут очевидно спрацьовують, але я намагаюся дотримуватися питання про те, що можна використати на будь-яких вікнах, без сторонніх програм!

Для Windows Vista і новіших версій ви можете легко (і безпечно) встановити telnet Programs and featuresабо скористатися такою командою:

pkgmgr /iu:”TelnetClient”

Це (і більшість відповідей!) Припускає, що веб-сайт джерела точно підбирає вашу ip-адресу - деякі типи проксі-серверів псують це. Я випилював свою ip-адресу з причини маршрутизатора. Цікаво, що в цих випадках веб-сайт, який використовує нестандартний порт, може спрацювати нормально.
Подорожник Geek

Не працюю curlmyip.com, але перевіряю роботу checkip.dyndns.org.
Sopalajo de Arrierez

2

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

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

1

Я хотів мати рішення, яке працює для Windows, не встановлюючи сторонні інструменти. Тому я взяв варіант powerhell , який повинен запускати сценарій щогодини.

Цей сценарій ви створюєте за допомогою блокнота

$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десь. Ви можете зателефонувати цьому скрипту або безпосередньо в powerhell, або використовувати планувальник завдань, як я це зробив. Це команда для виконання:

powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1

У планувальнику завдань ви створюєте нове завдання. У Trigger ви використовуєте налаштування щодня кожні 1 день, а при розширеному варіанті ви вибираєте кожну годину протягом тривалості негайно . Також поставте прапорець Запустити завдання якнайшвидше після пропуску запланованого запуску в налаштуваннях . У розділі Дія ви вставляєте вищезгаданий код виконання.

Код повноважень можна оптимізувати, тому що я не гуру повноважень (вперше з ним). Зараз я тестую, чи скрипт викликається щогодини.


1

Ось, що я зрозумів, можна використовувати вбудовану команду для отримання публічної IP-адреси, але у вас є доступ до Інтернету

telnet icanhazip.com

або

telnet myip.gelma.net

Гарний улов! Хоча icanhazip.comдля мене не буде працювати, а інший не працює IPv6 належним чином. :)
Даніель Б

0

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

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