2010-07-21 06:06:13 +0000 2010-07-21 06:06:13 +0000
61
61

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.

Odpowiedzi (13)

109
109
109
2014-02-27 14:57:47 +0000

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
33
33
33
2010-07-21 08:24:26 +0000

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)

16
16
16
2010-07-21 06:28:20 +0000

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).

7
7
7
2015-04-23 08:25:29 +0000

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
6
6
6
2011-02-12 01:58:08 +0000

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 )

5
5
5
2014-02-16 13:34:55 +0000

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. :)

5
5
5
2011-02-12 04:03:59 +0000

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 .

3
3
3
2014-01-15 00:48:54 +0000

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”
3
3
3
2013-12-05 15:40:30 +0000

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));
}
2
2
2
2014-11-28 11:40:53 +0000

Możesz użyć ifcfg.me . obsługuje on niektóre wewnętrzne komendy, które domyślnie dostarczane są z oknami.

curl ifcfg.me
nslookup . ifcfg.me
telnet ifcfg.me
ftp ifcfg.me
finger @ifcfg.me
1
1
1
2015-10-07 22:09:34 +0000

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ę.

1
1
1
2015-03-22 15:25:28 +0000

Oto co rozgryzłem, można użyć wbudowanego polecenia, aby uzyskać publiczny adres IP, ale masz dostęp do Internetu

telnet icanhazip.com

lub

telnet myip.gelma.net
0
0
0
2018-11-08 19:54:03 +0000

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.