Czy istnieje polecenie, za pomocą którego mogę znaleźć mój zewnętrzny adres IP mojego routera lub routera NAT \ DSL itp., Co eliminuje potrzebę odwiedzania whatsmyip.net lub podobnego.
Czy istnieje polecenie, za pomocą którego mogę znaleźć mój zewnętrzny adres IP mojego routera lub routera NAT \ DSL itp., Co eliminuje potrzebę odwiedzania whatsmyip.net lub podobnego.
Odpowiedzi:
Nie ma wbudowanego polecenia, aby to zrobić. Część problemu polega na tym, że gdy jesteś podłączony do Internetu za pośrednictwem routera, twój sprzęt sieciowy nie jest bezpośrednio podłączony do Internetu, więc Twojemu systemowi nie jest specjalnie przypisany adres IP. Możliwe, że w niektórych przypadkach masz nawet wiele zewnętrznych adresów IP, jeśli masz za sobą odwrotne proxy, ponieważ skonfigurowanych jest wiele sieci korporacyjnych. Najlepszym rozwiązaniem może być utworzenie skryptu, który będzie sprawdzał whatismyip.org , lub próba znalezienia, czy już istnieje.
(Wskazówka: whatismyip.org jest lepszy od większości innych rozwiązań, ponieważ zwraca adres IP jako zwykły tekst - bez zbędnego tekstu, linków, obrazów lub innych śmieci. Byłoby o wiele łatwiejsze w użyciu w skrypcie niestandardowym niż większość inne witryny wykrywające adresy IP).
Możesz użyć żądania DNS zamiast żądania HTTP, aby znaleźć swój publiczny adres IP:
C:\> nslookup myip.opendns.com. resolver1.opendns.com
Używa resolver1.opendns.com
serwera dns do rozpoznania magicznej myip.opendns.com.
nazwy hosta na Twój adres IP. (Uwaga: końcowe .
wyszukiwanie zapobiega dołączaniu domen wyszukiwania, co może dawać nieprawidłowe wyniki).
Wersja uniksowa:
$ dig +short myip.opendns.com @resolver1.opendns.com
pobierz własną kopię 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ł stworzony przeze mnie)
Działa to dobrze, używam go głównie z psexec podczas sprawdzania połączeń komputera klienckiego.
nslookup myip.opendns.com resolver1.opendns.com
Utwórz plik o nazwie ip.vbs
i skopiuj do niego następujące elementy:
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 używając
C:\>cscript ip.vbs
Jak zauważył nhinkle , najlepiej wybrać witrynę, która zwraca tylko adres IP, a nie reklamy HTML + itp., Takie jak:
(źródło: poprzednio http://externip.com/about )
Zrobiłem ten skrypt wsadowy, aby to zrobić 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 ci możliwość umieszczenia adresu IP w schowku i ustawia zmienną środowiskową - %PublicIP%
.
PROSTA METODA:
Teraz po prostu to robię:
curl icanhazip.com
lub...
curl icanhazip.com | clip
... aby pobrać bieżący publiczny adres IP do schowka.
Potrzebujesz cURL .
Z Powershell 3.0 (Windows 7 domyślnie jest 2.0) możesz używać Invoke-WebRequest
W przypadku IPv4:
$tmp =Invoke-WebRequest -URI http://myip.dnsomatic.com/
$tmp.Content
W przypadku IPv6:
$tmp =Invoke-WebRequest -URI http://myexternalip.com/raw
$tmp.Content
To da ci zmienną do pracy, jeśli masz coś konkretnego, co chcesz z tym zrobić. Używam tego do zbudowania skryptu, aby okresowo przesyłać dynamiczny adres IP routera, regularnie komunikować się z innym urządzeniem podczas regularnych testów, a następnie aktualizować DNS o najnowszy adres IP, jeśli został zmieniony, dzięki czemu mogę uzyskać dostęp do mojego sprzętu z dowolnego miejsca przez używając nazwy zamiast ciągłego ścigania adresu IP.
I oczywiście - gdy strony się zmieniają lub zmieniają się ich wyniki, należy to odpowiednio zaktualizować. :)
powershell.exe -noprofile -command ""
. Oddziel linię podział średnikiem ...
(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
Spróbuj tego:
nie wymaga instalowania ż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));
}
Bez programów innych firm jest trudny w systemie Windows, ponieważ Telnet nie jest domyślnie dostarczany, ale jeśli jest dostępny (XP) lub włączony (Windows Vista i nowszy), po prostu wpisz:
telnet curlmyip.com 80
ekran zacznie migać, a otrzymasz kursor ... Następny typ:
GET
Wielkimi literami ... zobaczysz nagłówki, a następnie swój ip (i przepraszam, że go zamazałem, pokazując tylko, gdzie to będzie!):
Inne odpowiedzi tutaj oczywiście działają, ale staram się zadać pytanie o coś, co można wykorzystać w dowolnym oknie, bez programów innych firm!
W systemie Windows Vista i nowszym można łatwo (i bezpiecznie) zainstalować telnet za pomocą Programs and features
lub użyć następującego polecenia:
pkgmgr /iu:”TelnetClient”
curlmyip.com
, ale przetestowane z checkip.dyndns.org
.
Chciałem mieć rozwiązanie, które działa na Windows bez instalowania narzędzi innych firm. Więc wybrałem opcję PowerShell , która powinna uruchamiać skrypt co godzinę.
Ten skrypt tworzysz 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 zapisz go getIP.ps1
gdzieś. Możesz wywołać ten skrypt albo bezpośrednio w PowerShell, albo użyć narzędzia do planowania zadań, tak jak ja. To jest polecenie do wykonania:
powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1
W harmonogramie zadań tworzysz nowe zadanie. W Trigger używasz tego ustawienia codziennie dla każdego 1 dnia, aw opcji zaawansowanej wybierasz co godzinę na natychmiastowy czas . Sprawdź także Uruchom zadanie tak szybko, jak to możliwe po nieudanym zaplanowanym uruchomieniu w Ustawieniach . W obszarze Akcja wklej powyższy kod wykonania.
Kod PowerShell można zoptymalizować, ponieważ nie jestem guru PowerShell (pierwszy raz z nim). Teraz sprawdzam, czy skrypt jest wywoływany co godzinę.
ipchicken.com zwróci twój pozorny adres IP w formacie tekstowym, jeśli możesz parsować zwracany kod HTML, który wyodrębniasz zewnętrzny adres IP routera. Alternatywnie możesz zainstalować jednego z tych dynamicznych agentów DNS, który aktualizuje pozorny zewnętrzny adres IP do nazwy FQDN, a następnie po prostu zrób przeglądanie swojej nazwy FQDN, aby zobaczyć swój bieżący numer IP. Kiedyś były darmowe, takie jak DynDNS, ale większość z nich wymaga teraz płatnego konta subskrypcyjnego.