Есть ли команда, которой я могу найти свой внешний IP моего маршрутизатора или моего Маршрутизатора NAT\DSL, и т.д., избавив от необходимости посетить whatsmyip.net или подобный.
Нет никакой встроенной команды, чтобы сделать это. Часть проблемы - то, что, когда Вы подключены к Интернету через маршрутизатор, Ваше сетевое оборудование непосредственно не подключено к Интернету, таким образом, Вашей системе конкретно не присваивают IP. Возможно, что у Вас могли бы даже быть несколько внешний дюйм/с в некоторых случаях, если Вы находитесь позади обратного прокси, поскольку много корпоративных сетей настраиваются. Ваш лучший выбор мог бы состоять в том, чтобы создать сценарий, который запрашивает whatismyip.org, или пытающийся найти, существуете ли Вы уже.
(Как подсказка, whatismyip.org предпочтителен для большинства других решений, так как она просто возвращает Ваш IP как простой текст - никакой лишний текст, ссылки, изображения или другой мусор. Было бы намного легче использовать в пользовательском сценарии, чем большинство других сайтов обнаружения IP.)
захватите свою собственную копию 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 + реклама, и т.д. как:
(источник: раньше 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-адрес в буфер обмена.
Вы должны ЗАВИХРИТЬСЯ.