есть ли команда, с помощью которой я могу найти свой внешний IP-адрес моего маршрутизатора или моего маршрутизатора NATDSL и т. д., устраняя необходимость посещения whatsmyip.net или похожее.
Команда Windows, возвращающая внешний IP-адрес
13 ответов
для этого нет встроенной команды. Часть проблемы заключается в том, что при подключении к интернету через маршрутизатор сетевое оборудование не подключается напрямую к интернету, поэтому системе не назначается 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"
или используйте powershell:
$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")
(отказ от ответственности: http://myexternalip.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 + реклама и т. д. like:
- http://myip.dnsomatic.com
- http://whatismyip.org
- http://icanhazip.com
- http://www.whatismyip.com/automation/n09230945.asp
(источник: ранее 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.
и, конечно-как сайты меняются или их выходы изменить вы хотите, чтобы обновить это соответствующим образом. :)
это хорошо работает, я использую его в основном с psexec при проверке подключений клиентского компьютера.
nslookup myip.opendns.com resolver1.opendns.com
попробуйте это:
Не нужно никакое внешнее установленное програмное обеспечение.
@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”
можно использовать ifcfg.я. он поддерживает некоторые внутренние команды, которые поставляются с windows по умолчанию.
curl ifcfg.me
nslookup . ifcfg.me
telnet ifcfg.me
ftp ifcfg.me
finger @ifcfg.me
Я хотел бы иметь решение, которое работает для 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 (мой первый раз с ним.) Сейчас я тестирую, вызывается ли скрипт каждый час.
вот что я понял, можно использовать встроенную команду для получения публичного IP-адреса, но у вас есть доступ к интернету
telnet icanhazip.com
или
telnet myip.gelma.net
ipchicken.com вернет ваш очевидный IP-адрес в текстовом формате, если вы можете разобрать возвращаемый HTML вы извлекаете внешний IP вашего маршрутизатора. Кроме того, можно установить один из этих динамических DNS-агентов, обновляющих внешний IP-адрес до полного доменного имени, а затем просто выполнить nslookup для полного доменного имени, чтобы увидеть текущий IP-номер. Раньше были бесплатные, как DynDNS, но большинство из них теперь требуют платной подписки.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]