Komenda Windows zwracająca zewnętrzne IP
Czy istnieje komenda, za pomocą której mogę znaleźć zewnętrzne IP mojego routera lub routera NAT \DSL itp., eliminując potrzebę odwiedzania whatsmyip.net lub podobnych.
Czy istnieje komenda, za pomocą której mogę znaleźć zewnętrzne IP mojego routera lub routera NAT \DSL itp., eliminując potrzebę odwiedzania whatsmyip.net lub podobnych.
Możesz użyć żądania DNS zamiast żądania HTTP, aby dowiedzieć się, jaki jest Twój publiczny adres IP:
C:\> nslookup myip.opendns.com. resolver1.opendns.com
Wykorzystuje on serwer dns resolver1.opendns.com
do rozwiązania magicznej nazwy hosta myip.opendns.com.
na your ip address. (Uwaga: trailing .
na odnośniku zapobiega dodawaniu domen wyszukiwawczych, które mogą dać błędne wyniki)
Wersja uniksowa:
$ dig +short myip.opendns.com @resolver1.opendns.com
Chwyć swój własny egzemplarz curl
z http://curl.haxx.se/download.html , a następnie po prostu
curl "http://myexternalip.com/raw"
lub użyj powershell:
$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")
(zastrzeżenie: http://myexternalip.com zostało stworzone przeze mnie)
Nie ma wbudowanego polecenia, aby to zrobić. Część problemu polega na tym, że gdy jesteś podłączony do Internetu przez router, Twój sprzęt sieciowy nie jest bezpośrednio podłączony do Internetu, więc Twój system nie ma przypisanego adresu IP. W niektórych przypadkach możliwe jest nawet posiadanie wielu zewnętrznych adresów IP, jeśli jesteś za odwrotnym proxy, ponieważ wiele sieci korporacyjnych jest skonfigurowanych. Najlepszym rozwiązaniem może być stworzenie skryptu, który zapyta whatismyip.org , lub spróbuje znaleźć, czy taki już istnieje.
(Jako wskazówka, whatismyip.org jest lepszy od większości innych rozwiązań, ponieważ po prostu zwraca Twój IP jako zwykły tekst - bez zbędnego tekstu, linków, obrazów lub innych śmieci. Byłoby to o wiele łatwiejsze w użyciu w niestandardowym skrypcie niż większość innych stron wykrywania IP).
To działa ładnie, używam go głównie z psexec podczas sprawdzania połączeń z komputerem klienta.
nslookup myip.opendns.com resolver1.opendns.com
Stwórz plik o nazwie ip.vbs
i skopiuj do niego:
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
Wykonaj za pomocą
C:\>cscript ip.vbs
Jak nhinkle zauważono , najlepiej wybrać stronę, która zwraca tylko IP, a nie HTML + reklamy, itp. jak:
(źródło: wcześniej http://externip.com/about )
Z Powershell 3.0 (domyślnie Windows 7 to 2.0) możesz użyć Invoke-WebRequest
Dla IPv4:
$tmp =Invoke-WebRequest -URI http://myip.dnsomatic.com/
$tmp.Content
Dla IPv6:
$tmp =Invoke-WebRequest -URI http://myexternalip.com/raw
$tmp.Content
To da ci zmienną, z którą będziesz mógł pracować, jeśli masz coś konkretnego, co chcesz z tym zrobić. I’m actually using this to build a script to upload my router’s dynamic IP periodically, have another machine test communication to it at regular intervals, and then update DNS with the latest IP if it has changed so I can access my gear from anywhere by using a name instead of having to constantly chase down the IP.
And of course - as the sites change or their outputs change you’ll want to update this accordingly. :)
Zrobiłem ten skrypt wsadowy kilka miesięcy temu:
@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
Daje on możliwość umieszczenia adresu IP w schowku i ustawia zmienną środowiskową - %PublicIP%
.
SIMPLER METHOD:
Teraz po prostu robię to zamiast tego:
curl icanhazip.com
lub…
curl icanhazip.com | clip
…aby dostać aktualny publiczny adres IP do schowka.
Potrzebujesz cURL .
Bez programów innych firm jest ciężko w systemie Windows, ponieważ Telnet nie jest dostarczany domyślnie, ale jeśli jest tam (XP) lub włączony (Windows Vista i wyższy), po prostu wpisz:
telnet curlmyip.com 80
ekran będzie migać, a ty po prostu otrzymasz kursor… Następnie wpisz:
GET
dużymi literami… zobaczysz nagłówki, a następnie swój ip (i przepraszam, że go zamazałem, po prostu pokazując gdzie będzie! ):
Inne odpowiedzi tutaj oczywiście działają, ale, staram się trzymać się pytania o coś, co może być użyte na każdym oknie, bez programów innych firm!
Dla Windows Vista i wyżej, możesz zainstalować telnet łatwo (i bezpiecznie) poprzez Programs and features
, lub użyć następującej komendy:
pkgmgr /iu:”TelnetClient”
Spróbuj tak: Nie wymaga instalacji żadnego zewnętrznego oprogramowania.
@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));
}
Chciałem mieć rozwiązanie, które działa dla Okna bez instalowania narzędzi innych firm. Wziąłem więc opcję powershell, która powinna uruchamiać skrypt co godzinę.
Tworzysz ten skrypt za pomocą Notatnika
$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"
i zapisujesz go gdzieś jako getIP.ps1
. Możesz wywołać ten skrypt albo bezpośrednio w powershell'u albo skorzystać z planera zadań, tak jak ja to zrobiłem. Jest to polecenie do wykonania:
powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1
W planerze zadań tworzysz nowe zadanie. W opcji Trigger używasz ustawienia daily dla każdego 1 dnia a w opcji advanced wybierasz every hour for the duration of immediately. Sprawdź również Run task jak najszybciej po opuszczeniu zaplanowanego startu w Ustawieniach. Pod Akcja wklejasz powyższy kod wykonania.
Kod powershell może być zoptymalizowany, ponieważ nie jestem guru powershell (mój pierwszy raz z nim). Teraz testuję czy skrypt jest wywoływany co godzinę.
ipchicken.com zwróci twój pozorny adres IP w formacie tekstowym, jeśli możesz przetworzyć zwracający się kod HTML, który wyodrębniasz z zewnętrznego adresu IP routera. Alternatywnie można zainstalować jeden z tych dynamicznych agentów DNS, który aktualizuje swoje pozorne zewnętrzne IP do FQDN, a następnie po prostu zrobić nslookup na FQDN, aby zobaczyć swój aktualny numer IP. Kiedyś były darmowe, takie jak DynDNS, ale teraz większość z nich wymaga płatnego konta abonamentowego.