Komenda do określenia mojego publicznego IP?

Jeśli sprawdzę za pomocą google, mogę zobaczyć moje publiczne IP. Czy jest coś w wierszu poleceń Ubuntu, co da mi taką samą odpowiedź?

Rozwiązanie

Jeśli nie jesteś za routerem, możesz to sprawdzić używając ifconfig.

Jeśli jesteś za routerem, wtedy twój komputer nie będzie wiedział o publicznym adresie IP, ponieważ router wykonuje translację adresów sieciowych. Możesz zapytać jakąś stronę internetową jaki jest twój publiczny adres IP używając curl lub wget i wyciągnąć z niej potrzebne informacje:


curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/
Komentarze (16)

Aby znaleźć zewnętrzne ip, możesz albo użyć zewnętrznych usług internetowych, lub użyć metod opartych na systemie. Łatwiej jest korzystać z usług zewnętrznych, również rozwiązania oparte na ifconfig będzie działać w systemie tylko wtedy, gdy nie jesteś za NAT. te dwie metody zostały omówione poniżej w szczegółach.

Znajdowanie zewnętrznego IP przy użyciu zewnętrznych usług

Najprostszym sposobem jest użycie zewnętrznej usługi poprzez przeglądarkę z linii poleceń lub narzędzie do pobierania. Ponieważ wget jest domyślnie dostępny w Ubuntu, możemy go użyć.
Aby znaleźć swoje ip, użyj-

$ wget -qO- https://ipecho.net/plain ; echo

Courtesy:

Możesz również użyć lynx(przeglądarka) lub curl w miejsce wget z drobnymi wariacjami na temat powyższej komendy, aby znaleźć swoje zewnętrzne ip.

Użycie curl do znalezienia ip:

$ curl https://ipecho.net/plain

Dla lepiej sformatowanego wyjścia użyj:

$ curl https://ipecho.net/plain ; echo

Szybszą (prawdopodobnie najszybszą) metodą jest użycie dig z OpenDNS jako resolvera:

Pozostałe odpowiedzi tutaj wszystkie przechodzą przez HTTP do zdalnego serwera. Niektóre z nich wymagają parsowania danych wyjściowych, lub polegają na nagłówku User-Agent aby serwer odpowiadał czystym tekstem. Zmieniają się one również dość często (upadają, zmieniają nazwę, zamieszczają reklamy, mogą zmienić format wyjściowy itp.).

  1. Protokół odpowiedzi DNS jest znormalizowany (format pozostanie zgodny).
  2. Historycznie usługi DNS (OpenDNS, Google Public DNS, ...) mają tendencję do przetrwania znacznie dłużej i są bardziej stabilne, skalowalne i ogólnie wyglądają po niż cokolwiek nowego hip whatismyip.com HTTP usługa jest gorąca dzisiaj.
  3. (dla tych geeków, którzy dbają o mikrooptymalizację), ta metoda powinna być z natury szybsza (czy to tylko o kilka mikro sekund).

Użycie dig z OpenDNS jako resolvera:

$ dig +short myip.opendns.com @resolver1.opendns.com

111.222.333.444

Kopiowane z: https://unix.stackexchange.com/a/81699/14497

Znajdowanie zewnętrznego IP bez polegania na zewnętrznych usługach

  • Jeśli znasz nazwę swojego interfejsu sieciowego

Wpisz w swoim terminalu następujące polecenie:

$ LANG=c ifconfig  | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'

W powyższym, zamień `na nazwę twojego rzeczywistego interfejsu, np:eth0,eth1,pp0`, itd...

Przykładowe użycie:

$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
  • Jeśli nie znasz nazwy swojego interfejsu sieciowego

Wpisz poniższe polecenie w terminalu (w ten sposób uzyskasz nazwę i adres IP każdego interfejsu sieciowego w systemie):

$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'

Przykład użycia:

$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444

N.B: Dane wyjściowe są orientacyjne i nie są prawdziwe.

Courtesy: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/

UPDATE

  1. LANG=c został dodany do zastosowań opartych na ifconfig, tak aby zawsze dawał angielskie wyjście, niezależnie od ustawień locale.
Komentarze (10)

Ten, którego używam to :

wget -O - -q icanhazip.com

Tak, możesz mieć ip :-)

Komentarze (1)