Jak uzyskać mój zewnętrzny adres IP (przez NAT) z wiersza poleceń systemu Windows? [duplikować]

13

Polecenie „ipconfig” systemu Windows może wyświetlać tylko parametry z interfejsów Ethernet z mojego komputera (nawet z ipconfig /allargumentem). Może wyświetlać szczegółowe informacje o interfejsie, ale nigdy nie pokaże mi mojego zewnętrznego adresu IP w sieci NAT .

ipconfig / all - zrzut ekranu systemu Windows

Istnieje jednak kilka witryn, takich jak „Jaki jest mój adres IP”, które mogą uzyskać i wyświetlić mój zewnętrzny adres IP. Zastanawiam się więc, czy można uzyskać tę wartość zewnętrznie? Czy powinienem oczekiwać, że istnieje jakiś sposób na uzyskanie tych informacji z wiersza poleceń na moim komputerze lokalnym ...

Potrzebuję uzyskać tę wartość, aby zalogować się do aplikacji, którą wykonuję za pomocą VBScript . Czy można to zrobić z poziomu cmdsystemu Windows?

Diogo
źródło
Należy pamiętać, że usługi typu „co to jest mój-IP-HTTP” mogą dać adres IP serwera proxy. (I zanim ktokolwiek zauważy, że istnieją serwery proxy HTTPS, nie możesz przezroczystego serwera proxy HTTPS. Jeśli go masz, będziesz o tym wiedział.)
billpg

Odpowiedzi:

11

Teraz, korzystając ze strony Olivera, można to zrobić za pomocą VBScript.

Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://ifconfig.me/ip", False
o.send
WScript.StdOut.Write o.responseText

Istnieje podobna metoda dla PowerShell.

Kok
źródło
Fajnie, działało. Wstawię go do mojego programu. To dobre rozwiązanie dla mojego problemu. Dziękuję Ci.
Diogo,
Hmm, w tym skrypcie zwraca „Odmowa dostępu” w wierszu 4, znak 1. Nawet uruchamiając go z wiersza poleceń praw administratora ... Czy wiesz dlaczego?
Diogo,
@DiogoRocha Nie wiem dlaczego. Ten Fiasco jest prawdopodobnie bardziej niezawodny. Możliwe jest również, że masz zaporę ogniową lub coś blokującego dostęp do Internetu do wscript/ cscript.
Bob
10

Problem w tym, że to nie jest twój adres IP. To adres IP twojego routera.

Więc nigdy nie będziesz w stanie go odzyskać bez przechodzenia przez router. I najłatwiej jest po prostu sprawić, aby router pobierał dla ciebie stronę internetową (jak już zauważyłeś). Ponieważ router użyje swojego adresu IP do pobrania tej witryny.

Biorąc to pod uwagę, możesz ułatwić sobie korzystanie z ifconfig.me/ip . Teraz, jeśli tak curl, to już gotowe, jeśli nie: alternatywa Wget / cURL natywna dla systemu Windows?

Der Hochstapler
źródło
1
ifconfig.me/ip długo się ładował. whatismyip.org daje identyczny adres IP w postaci zwykłego tekstu i był znacznie szybszy.
nhinkle
1
@nhinkle Może to zależeć od Twojej lokalizacji. Oba wydają się mieć dla mnie ten sam czas ładowania, ale czas odpowiedzi ping z ifconfig.me wynosi połowę (139ms vs 250ms). Prawdopodobnie ważniejsze jest to, że usługa pozostaje tak długo, jak to możliwe, ale tak naprawdę nie mamy możliwości dowiedzenia się.
Bob
Nie ma nic złego w zewnętrznych adresach IP mojego routera, biorąc pod uwagę reguły przekierowania portów i IPv4.
mbx
5

Utwórz skrypt VB, aby uruchomić go w dowolnym czasie.

Wpisz to do pliku txt:

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

Zamknij plik txt i zmień jego nazwę na ip.vbs (zapisz go w C: w tym przykładzie)

W systemie Windows otwórz okno dos (uruchom cmd) ( ha! Właśnie zdałem sobie sprawę, jeśli zamienisz, że staje się uruchamiane dmc !! )

Upewnij się, że jesteś w c: / (jeśli nie, wpisz c: i naciśnij enter, następnie cd .. i wpisz kilka razy, aż zobaczysz C:>)

W wierszu polecenia dos wpisz:

cscript ip.vbs

i natychmiast zobaczysz swój zewnętrzny adres IP.

Jeśli umieścisz plik vbs na kluczu USB lub czymś innym (i pamiętasz, aby uruchomić cscript ip.vbs po znaku zachęty dos - ale upewnij się, że jesteś w tym samym katalogu co plik ip.vbs), możesz zabrać to ze sobą gdziekolwiek jesteś i uruchom plik .vbs na dowolnym komputerze, aby zobaczyć ich zewnętrzny adres IP.

Jeszcze jedna uwaga: wiersz, który ma adres icanhazip.com, można zmienić na dowolny z poniższych:

http://myip.dnsomatic.com
http://whatismyip.org
http://icanhazip.com
http://www.whatismyip.com/automation/n09230945.asp
http://externip.com

Edytuj, możesz także uruchomić plik ip.vbs w systemie Windows bez przechodzenia do okna dos, a pojawi się on w małym wyskakującym oknie.

Mistrz
źródło
icanhazip.com ma bardzo krótki czas reakcji, który jest lepszy niż ipconfig.me/ip tutaj w centrum Europy.
Martin Braun,
3

Aby uzyskać zewnętrzny adres IP, musisz zapytać o coś poza siecią i poprosić, aby poinformował o tym, jaki jest twój adres IP. Można to zrobić za pomocą skryptu, wysyłając zapytanie do strony, na której łatwo jest parsować wynik, i uzyskując z niego adres IP, ale w systemie Windows nie ma wbudowanego narzędzia, które można by tylko powiedzieć, jaki jest twój zewnętrzny adres IP. Musisz sam napisać lub znaleźć i pobrać.

Scott Chamberlain
źródło
2

Używając czegoś takiego jak DynDNS do przypisania Twojemu adresowi DHCP nazwy domeny, możesz następnie wykonać polecenie nslookupping lub ping (jeśli router jest skonfigurowany do reagowania) na nazwę swojej domeny i wyodrębnić z niej adres IP.

Jedynym innym narzędziem systemu Windows jest traceroute, ale wyświetlałoby tylko bramę wychodzącą, z którą się łączysz, a nie adres IP routera, który łączy się z tą bramą.

Edycja: Ponieważ wyodrębnienie ciągu adresu IP wymaga trochę analizy i ifconfig.mema niezbyt rzadką odpowiedź, oto trochę wariantu skryptu Boba, funkcja może sprawdzić brak odpowiedzi i zwrócić ładne czyste IP adres do użycia w skrypcie, jeśli serwer jest uruchomiony.

wscript.echo WAN_IP()

function WAN_IP()
    set obj = createobject("Microsoft.XMLHTTP")
    call obj.open("get", "http://ifconfig.me/ip", false)
    obj.send()

    strresponse = obj.responsetext
    set obj = nothing

    if strresponse <> "" then
        strIP = strresponse
    else
        strIP = "Unavailable"
    end if

    WAN_IP = trim(strIP)

end function
Fiasco Labs
źródło
1

Jeśli router obsługuje Universal plug & Play (UPnP), możesz zapytać o jego adresy IP.

W systemie Windows można wyszukiwać takie informacje za pomocą WMI i wiersza polecenia za pomocą narzędzia WMIC.

Robert
źródło
2
Czy możesz podać przykład? Byłbym bardzo zainteresowany tym.
Der Hochstapler
1

Jak już powiedzieli inni, musisz polegać na usłudze zewnętrznej. Poleciłbym http://www.externalip.net

Możesz użyć http://api.externalip.net/ip, aby uzyskać ip w formacie zwykłego tekstu. Okazało się, że jest szybki i niezawodny, a ponadto ma nieograniczone zastosowanie.


źródło