Команда Windows, возвращающая внешний IP-адрес

есть ли команда, с помощью которой я могу найти свой внешний IP-адрес моего маршрутизатора или моего маршрутизатора NATDSL и т. д., устраняя необходимость посещения whatsmyip.net или похожее.

3
задан Marcks Thomas
01.12.2022 12:30 Количество просмотров материала 2460
Распечатать страницу

13 ответов

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

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

13
отвечен nhinkle 2022-12-02 20:18

вы можете использовать запрос 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
85
отвечен jfs 2022-12-02 22:35

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

26
отвечен akira 2022-12-03 00:52

создайте файл с именем 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 + реклама и т. д. like:

(источник: ранее http://externip.com/about)

6
отвечен hyperslug 2022-12-03 03:09

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

@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 2022-12-03 05:26

С 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 2022-12-03 07:43

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

nslookup myip.opendns.com resolver1.opendns.com
4
отвечен Antti Lagus 2022-12-03 10:00

попробуйте это:

Не нужно никакое внешнее установленное програмное обеспечение.



@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 2022-12-03 12:17

без сторонних программ трудно на 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 2022-12-03 14:34

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

curl ifcfg.me
nslookup . ifcfg.me
telnet ifcfg.me
ftp ifcfg.me
finger @ifcfg.me
2
отвечен Eun 2022-12-03 16:51

Я хотел бы иметь решение, которое работает для Windows без установки сторонних средств. Поэтому я взял powershell опция, которая должна запускать скрипт каждый час.

вы создаете этот скрипт с помощью Notepad

$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

в планировщике задач создайте новую задачу. At триггер вы используете параметр ежедневно на каждый 1 день и под расширенный вариант вы выбираете каждый час в течение немедленно. Также проверьте запустить задачу как можно скорее после пропуска запланированного запуска на настройки. Под Action вставить приведенный выше код выполнения.

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

1
отвечен testing 2022-12-03 19:08

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

telnet icanhazip.com

или

telnet myip.gelma.net
1
отвечен Sam 2022-12-03 21:25

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

0
отвечен anthonymaw 2022-12-03 23:42

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх