Чи існує команда, за допомогою якої я можу знайти свій зовнішній 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"
або скористайтеся повноваженнями:
$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, не встановлюючи сторонні інструменти. Тому я взяв варіант 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 день, а при розширеному варіанті ви вибираєте кожну годину протягом тривалості негайно . Також поставте прапорець Запустити завдання якнайшвидше після пропуску запланованого запуску в налаштуваннях . У розділі Дія ви вставляєте вищезгаданий код виконання.
Код повноважень можна оптимізувати, тому що я не гуру повноважень (вперше з ним). Зараз я тестую, чи скрипт викликається щогодини.
Ось, що я зрозумів, можна використовувати вбудовану команду для отримання публічної IP-адреси, але у вас є доступ до Інтернету
telnet icanhazip.com
або
telnet myip.gelma.net
icanhazip.com
для мене не буде працювати, а інший не працює IPv6 належним чином. :)
ipchicken.com поверне вашу очевидну IP-адресу у текстовому форматі, якщо ви зможете проаналізувати HTML, що повертається, ви витягнете зовнішній IP-код маршрутизатора. Крім того, ви можете встановити один із тих динамічних агентів DNS, який оновлює зовнішній зовнішній IP на FQDN, а потім просто зробіть nslookup на FQDN, щоб побачити поточний номер IP-адреси. Раніше були безкоштовні, такі як DynDNS, але для більшості з них зараз потрібен платний рахунок.