Jeśli sprawdzę za pomocą google, mogę zobaczyć moje publiczne IP. Czy jest coś w wierszu poleceń Ubuntu, co da mi taką samą odpowiedź?
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/<.*$//'
lub krócej
curl https://ipinfo.io/ip
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.
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
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.).
- Protokół odpowiedzi DNS jest znormalizowany (format pozostanie zgodny).
- 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.
- (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
Wpisz w swoim terminalu następujące polecenie:
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
W powyższym, zamień <interface_name>
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
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
LANG=c
został dodany do zastosowań opartych na ifconfig
, tak aby zawsze dawał angielskie wyjście, niezależnie od ustawień locale.