Polecenie określania mojego publicznego adresu IP?

636

Jeśli sprawdzę w Google , mogę zobaczyć mój publiczny adres IP. Czy w wierszu poleceń Ubuntu jest coś, co da mi tę samą odpowiedź?

kfmfe04
źródło
2
„posiadający dynamiczny adres IP”, „SSH przy użyciu innego systemu w Internecie”, „polecenie, które wyświetli obecny PUBLICZNY adres IP”. Widzisz tutaj problem z kurczakiem / jajkiem? Jak możesz uruchamiać polecenia na zdalnym serwerze, nie znając jego adresu? Możesz być bardziej zainteresowany usługami takimi jak no-ip.com / DynDNS.org.
gertvdijk
nie można SSH nie znając publicznego adresu IP mój przyjacielu ... dynDNS kosztuje dużo i ciężkie prace bez ip, ale sytuacja na to nie pozwala ... w każdym razie odpowiedź została już udzielona ... dzięki za sugestię
Bhavesh Diwan
1
PS duckduckgo.com/?q=ip (bez wiersza poleceń, ale nie ma też większego brata G.)
Campa
1
Może to powinno być osobne pytanie, ale chciałbym zobaczyć alert, gdy zmieni się mój publiczny adres IP. Na razie używam tylko następujących odpowiedzi w crontab z notify-send.
PJ Brunet,
świetne rozwiązania poniżej. Do użytku z Centos: ifconfig eth1 | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*inet *([^ ]+).*/\2/p}'gdzie eth1 jest interesującym urządzeniem sieciowym, możesz pominąć ciąg „et1”, aby pokazać wszystkie IP wszystkich adapterów. Zamiast tego \2możesz napisać, \1 \2aby pokazać nazwy każdego adaptera.
Hafenkranich

Odpowiedzi:

916

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

Jeśli jesteś za routerem, komputer nie będzie wiedział o publicznym adresie IP, ponieważ router dokonuje translacji adresów sieciowych. Możesz zapytać witrynę internetową, z czego korzysta Twój publiczny adres IP curllub wgetwyodrębnić 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
Michael K.
źródło
27
ty - zaraz po tym, jak opublikowałem, zdałem sobie sprawę, że najpierw nie szukałem odpowiedzi w Google: wygląda na to, że to zadziała curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' Inne możliwości są wymienione tutaj: go2linux.org/what-is-my-public-ip-address-with-linux
kfmfe04
1
jasne
1
Wyjaśnienie: To był hack i bardzo brzydki, więc zrobiłem edycję, aby uprościć i coś, co ludzie mogą zapamiętać.
jrg
2
Dokładnie, jak stwierdził Giovanni P. PO powinien zmienić zaakceptowaną odpowiedź.
loostro
36
curl -s ipinfo.io/ip
chao
385

Aby znaleźć zewnętrzny adres IP, możesz użyć zewnętrznych usług internetowych lub metod systemowych. Łatwiej jest skorzystać z usługi zewnętrznej, również ifconfigrozwiązania oparte na systemie będą działać w twoim systemie tylko wtedy, gdy nie jesteś za NAT. te dwie metody zostały szczegółowo omówione poniżej.

Znajdowanie zewnętrznego adresu IP za pomocą usług zewnętrznych

Najprostszym sposobem jest skorzystanie z usługi zewnętrznej za pomocą przeglądarki wiersza polecenia lub narzędzia do pobierania. Ponieważ wgetjest domyślnie dostępny w Ubuntu, możemy z niego korzystać.
Aby znaleźć swój adres IP, użyj-

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

Dzięki uprzejmości :

Możesz także użyć lynx(przeglądarki) lub curlzamiast wgetniewielkich odmian powyższego polecenia, aby znaleźć swój zewnętrzny adres IP.

Za pomocą curlznaleźć ip:

$ curl https://ipecho.net/plain

Aby uzyskać lepiej sformatowane dane wyjściowe, użyj:

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

Szybsza (prawdopodobnie najszybsza) metoda digz użyciem OpenDNSjako resolvera:

Pozostałe odpowiedzi tutaj przechodzą przez HTTP na zdalny serwer. Niektóre z nich wymagają analizy wyników lub polegają na nagłówku User-Agent, aby serwer odpowiedział zwykłym tekstem. Zmieniają się również dość często (zejdź na dół, zmień nazwę, umieść reklamy, mogą zmienić format wyjściowy itp.).

  1. Protokół odpowiedzi DNS jest ustandaryzowany (format pozostanie kompatybilny).
  2. Historycznie usługi DNS (OpenDNS, Google Publiczny DNS, ...) mają tendencję do przetrwania znacznie dłużej i są bardziej stabilne, skalowalne i ogólnie pod opieką niż jakakolwiek nowa, popularna dziś usługa HTTP whatismyip.com.
  3. (dla tych maniaków, którym zależy na mikrooptymalizacji), ta metoda powinna być z natury szybsza (czy to tylko o kilka mikro sekund).

Używanie dig z OpenDNS jako resolverem:

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

111.222.333.444

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

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

  • Jeśli znasz nazwę swojego interfejsu sieciowego

Wpisz następujące dane w swoim terminalu:

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

W powyższym przykładzie, należy wymienić <interface_name>z nazwy swojego 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 interfejsu sieciowego

Wpisz następujące dane w swoim terminalu (pobiera 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ładowe użycie:

$ 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

NB: Wyniki są orientacyjne i nierzeczywiste.

Dzięki uprzejmości: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/

AKTUALIZACJA

  1. LANG=czostał dodany do ifconfigzastosowań bazowych, dzięki czemu zawsze daje angielski wynik, niezależnie od ustawień regionalnych.
saji89
źródło
1
@ Z9iT, Jasne .. Powinno działać w dowolnej dystrybucji Linuksa pod warunkiem, że masz zainstalowany wget. Jak powiedziano, jeśli masz już curl lub ryś, użyj tego zamiast tego. Aby zainstalować, potrzebujesz uprawnień administratora, więc użyjsudo apt-get install wget
saji89
13
Polecenia z ifconfig działają tylko wtedy, gdy nie jesteś za NAT.
lukassteiner
1
wystarczy użyć -wopcji curl zamiast echa :)curl -w '\n' ident.me
drAlberT
3
Ta propozycja z użyciem dig jest całkiem niezła unix.stackexchange.com/questions/22615/…
binaryanomaly
4
Ostatnia wersja bez usług zewnętrznych działa tylko wtedy, gdy komputer jest podłączony bezpośrednio do Internetu, co rzadko się zdarza, w przeciwnym razie otrzymujesz tylko lokalny adres IP.
rubo77
117

Moim ulubionym zawsze było:

curl ifconfig.me

prosty, łatwy do pisania.

Najpierw musisz zainstalować curl;)

Jeśli ifconfig.me nie działa, spróbuj icanhazip.com i lub ipecho.net

curl icanhazip.com

lub

curl ipecho.net
Pantera
źródło
3
@ Z9iT, właśnie to sprawdziłem. Tak, wyświetli zewnętrzny ip w twoim terminalu.
saji89
7
Czas odpowiedzi z ifconfig.mewydaje się nieco wolniejszy niż ipecho.net.
Drew Noakes,
3
Jeśli nie masz, curlale masz wget:wget -U curl -qO- ifconfig.me
Stéphane Chazelas
2
ifconfig.me nie wydaje się odpowiadać :(
Asfand Qazi
1
@AsfandYarQazi - tutaj pracuję. Możesz wypróbować jedną z alternatyw, icanhazip.com
Panther
60

icanhazip.com jest moim ulubionym.

curl icanhazip.com

Możesz jawnie zażądać IPv4:

curl ipv4.icanhazip.com

Jeśli nie masz curl, możesz wgetzamiast tego użyć :

wget -qO- icanhazip.com
yprez
źródło
Dzięki! Musiałem wypróbować wiele sugerowanych powyżej, dopóki nie znalazłem takich, które mogą obsługiwać IPv6. Szkoda, że ​​takie usługi są zwykle nadal tylko IPv4.
Vladimír Čunát
48

Uważam, że wszystko jest denerwujące i powolne, więc napisałem własne. To proste i szybkie.

Jego interfejs API znajduje się na stronie http://api.ident.me/

Przykłady:

curl ident.me
curl v4.ident.me
curl v6.ident.me
Pierre Carrier
źródło
1
Woah, to było naprawdę szybkie!
waldyrious
1
Znajdę rozwiązanie icanhazip.com szybciej i zawiera znak nowej linii na wyjściu.
Tyler Collier,
1
Tak, ostatnio było rzeczywiście szybciej. Właśnie poprawiłem moje rozwiązanie.
Pierre Carrier
2
Sława! 2 lata i nadal go utrzymujesz. Dobra robota. „IDENTify ME”, przychodzi mi na myśl, gdy muszę sprawdzić ip :)
Mohnish
aws jest szybszy time curl http://checkip.amazonaws.com-> 0.91svs .241sdla ident.mePo prostu módlmy się, aws nie spada;)
Avindra Goolcharan
42

Możesz użyć żądania DNS zamiast żądania HTTP, aby znaleźć swój publiczny adres IP:

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

Używa resolver1.opendns.comserwera dns do rozpoznania magicznej myip.opendns.comnazwy hosta na Twój adres IP.

jfs
źródło
3
To jest naprawdę szybkie. Wykonałem jedną rozgrzewkę, a następnie 10 egzekucji i curl icanhazip.com. Średnia dla curlwersji: 174ms. Średnia dla wersji tylko DNS: 9ms. ~ 19x szybciej. Zobacz także: unix.stackexchange.com/a/81699/8383
Adam Monsen
1
@AdamMonsen Dziękujemy za link. Istotą korzystania z DNS (jak podaje odpowiedź, którą połączyłeś) jest to, że odpowiedź jest standardowa (i raczej nie ulegnie zmianie), a usługa (OpenDNS) może pozostać dłużej niż większość jej alternatyw HTTP. Czas potrzebny na przesłanie żądania może być zacieniony przez czas uruchomienia polecenia.
jfs
Tak. Nie zdziwiłbym się, gdyby curlsam był wolniejszy niż dig. Nawet gdyby zostały przepisane tak, aby były jak najbardziej podobne, curlnadal byłyby wolniejsze; używa HTTP (w tym DNS) i digużywa tylko DNS.
Adam Monsen,
22

Amazon AWS

curl http://checkip.amazonaws.com

Przykładowe dane wyjściowe:

123.123.123.123

Lubię to ponieważ:

  • zwraca tylko zwykły tekst IP, nic więcej
  • pochodzi od znanego dostawcy, który prawdopodobnie wkrótce nie przejdzie w tryb offline
Ciro Santilli
źródło
18

Ten, którego używam to:

wget -O - -q icanhazip.com

Tak, możesz mieć ip :-)

jflaflamme
źródło
3
Wolę, że curl icanhazip.comczasami wgetjest dostępna tylko jedna, ale czasami też nie wgetjest dostępna i curljest twoją jedyną opcją (jak OS / X). Tak czy inaczej curl icanhazip.comjest prawie tak łatwe, curl ifconfig.meale o wiele zabawniejsze ;-)
TryTryAgain
11

Wpisz to dokładnie, naciśnij Entertam, gdzie wskazano:

telnet ipecho.net 80Enter
GET /plain HTTP/1.1Enter
HOST: ipecho.net Enter
BROWSER: web-kitEnter
Enter

Spowoduje to ręczne przesłanie żądania HTTP, które zwróci adres IP na dole HTTP/1.1 200 OK reply

Przykładowe dane wyjściowe:

$ telnet ipecho.net 80
Trying 146.255.36.1...
Connected to ipecho.net.
Escape character is '^]'.
GET /plain HTTP/1.1
HOST: ipecho.net
BROWSER: web-kit

HTTP/1.1 200 OK
Date: Tue, 02 Jul 2013 07:11:42 GMT
Server: Apache
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache
Pragma: no-cache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html

f
111.222.333.444
0
Liam
źródło
6
Fajnie, działało to dobrze, brak konieczności instalowania curl był dla mnie zaletą: jeden liner: printf "GET / plain HTTP / 1.1 \ nHOST: ipecho.net \ nBROWSER: web-kit \ n \ n" | nc ipecho.net 80
Ozone
9

Kolejny szybki (względnie najszybszy)

curl ipecho.net/plain
Mohnish
źródło
9

W tym celu wymyślono STUN . Jako klient możesz wysłać zapytanie do publicznie dostępnego serwera STUN i poprosić go o zwrócenie adresu IP, który widzi. Niby niski poziom whatismyip.com, ponieważ nie używa HTTP ani inteligentnie spreparowanych serwerów DNS, ale niesamowicie szybki protokół STUN.

Za pomocą stunclient

Jeśli stunclientzainstalowałeś ( apt-get install stuntman-clientna debian / ubuntu), możesz po prostu zrobić:

$stunclient stun.services.mozilla.com
Binding test: success
Local address: A.B.C.D:42541
Mapped address: W.X.Y.Z:42541

gdzie A.B.C.Djest adres IP twojego komputera w sieci lokalnej i W.X.Y.Zserwery adresów IP, takie jak strony internetowe, widzą z zewnątrz (i ten, którego szukasz). Za pomocą tej opcji sedmożesz zmniejszyć powyższy wynik tylko do adresu IP:

stunclient stun.services.mozilla.com |
    sed -n -e "s/^Mapped address: \(.*\):.*$/\1/p"

Pytanie dotyczyło jednak sposobu znalezienia go za pomocą wiersza polecenia, co może wykluczyć użycie klienta STUN. Zastanawiam się więc ...

Za pomocą bash

Prośba STUN można ręcznie, wysłany do zewnętrznego serwera STUN użyciu netcati być przetwarzane po użyciu dd, hexdumpi sedtak:

$echo -en '\x00\x01\x00\x08\xc0\x0c\xee\x42\x7c\x20\x25\xa3\x3f\x0f\xa1\x7f\xfd\x7f\x00\x00\x00\x03\x00\x04\x00\x00\x00\x00' |
    nc -u -w 2 stun.services.mozilla.com 3478 |
    dd bs=1 count=4 skip=28 2>/dev/null |
    hexdump -e '1/1 "%u."' |
    sed 's/\.$/\n/'

Echo definiuje binarne żądanie STUN (0x0001 oznacza żądanie wiązania) o długości 8 (0x0008) z plikiem cookie 0xc00cee i niektórymi wklejonymi treściami z wireshark. Tylko cztery bajty reprezentujące zewnętrzny adres IP są pobierane z odpowiedzi, czyszczone i drukowane.

Działa, ale nie jest zalecany do użytku produkcyjnego :-)

PS Wiele serwerów STUN jest dostępnych, ponieważ jest to podstawowa technologia SIP i WebRTC. Używanie jednego z Mozilli powinno być bezpieczne z punktu widzenia prywatności, ale możesz także użyć innego: listy serwerów STUN

Victor Klos
źródło
+1 za najbardziej maniakalną i właściwie najbardziej aproposową technologię. Kwerenda HTTP działa, z czego korzystałam przez całe życie, ale podoba mi się, że w tej kwestii pojawiła się myśl. Nie wiedziałem tego Dzięki!
Mike S
7

Mam na to głupią usługę przez telnet. Coś takiego:

telnet myip.gelma.net

Your IPv4: xxx.xxx.xxx.xxx
Your IPv6: ::ffff:xxxx:xxxx

Możesz go używać.

Gelma
źródło
5

Możesz przeczytać stronę internetową za pomocą tylko bash, bez curl, wget:

$ exec 3<> /dev/tcp/icanhazip.com/80 && # open connection
  echo 'GET /' >&3 &&                   # send http 0.9 request
  read -u 3 && echo $REPLY &&           # read response
  exec 3>&-                             # close fd
jfs
źródło
To w połączeniu z checkip.amazonaws.comjest dla mnie najszybsze
Avindra Goolcharan
1
@AvindraGoolcharan wypróbuj żądanie dns
jfs
2

Dla tych z nas, którzy mają dostęp do logowania do naszych routerów, użycie skryptu do zapytania routera, jaki jest jego adres IP WAN, jest najbardziej wydajnym sposobem na określenie zewnętrznego adresu IP. Na przykład poniższy skrypt python wypisuje zewnętrzny adres IP mojego routera Medialink MWN-WAPR300N:

import urllib, urllib2, cookielib
import re
from subprocess import check_output as co

cookie_jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar))
urllib2.install_opener(opener)

def get(url, values=None):
  data = None
  if values: data = urllib.urlencode(values)
  req = urllib2.Request(url, data)
  rsp = urllib2.urlopen(req)
  return rsp.read()

router = co(['ip', '-o', 'ro', 'list', '0.0.0.0/0']).split()[2]
url = "http://" + router

get(url+"/index.asp")
get(url+"/LoginCheck", dict(checkEn='0', Username='admin', Password='admin'))
page = get(url+"/system_status.asp")

for line in page.split("\n"):
  if line.startswith("wanIP = "):
    print line.split('"')[1]
    exit(1)

Pamiętaj, że nie jest to zbyt bezpieczne (jak w przypadku zwykłych danych uwierzytelniających i logowania do większości routerów), a na pewno nie jest przenośne (należy zmienić dla każdego routera). Jest to jednak bardzo szybkie i całkowicie rozsądne rozwiązanie w fizycznie bezpiecznej sieci domowej.

Aby dostosować skrypt dla innego routera, zalecamy użycie dodatku tamperdata w Firefoksie, aby ustalić, jakie żądania HTTP należy wykonać.

Cronburg
źródło
2
Powinieneś spróbować uzyskać adres IP routera gramatycznie. Na przykład router = subprocess.check_output(['ip', '-o', 'ro', 'list', '0.0.0.0/0']).split()[2].
Cristian Ciupitu
2

Otrzymają one lokalne adresy IP:

ifconfig

lub w przypadku krótszych wyników:

ifconfig | grep inet

również

ip addr show

i prawdopodobnie:

hostname -I

To powinno uzyskać zewnętrzny adres IP

wget http://smart-ip.net/myip -O - -q ; echo

Uwaga: Jeśli nie masz nic przeciwko instalacji curl, to również:

curl http://smart-ip.net/myip
Wilf
źródło
1
ifconfig | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*addr: *([^ ]+).*/\1,\2/p}'wydrukuje lokalne interfejsy i odpowiadające im adresy IP V4
Hannu
1
ifconfig | sed -nre '/^[^ ]+/{N;N;s/^([^ ]+).*addr: *([^ ]+).*addr: *([^ ]+).*/\1,\2,\3/p}'- adresy IP v4 i v6.
Hannu
2

Wiele routerów domowych może być zapytanych przez UPnP:

curl "http://fritz.box:49000/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>" -s

Następnie grep adres IP z odpowiedzi.

grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'

źródło
2

Jeśli używasz DD-WRT, to działa dla mnie:

curl -s 192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print $2}'

lub

curl -s -u your_ddwrt_username:your_ddwrt_password http://192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print $2}'
  • Gdzie 192.168.1.1 to adres IP bramy / routera LAN routera DD-WRT.

  • Składnik -s oznacza cichy (tzn. Nie pokazuje informacji o postępie zwijania).

  • Och, powinienem wspomnieć, że używam powyższego z „DD-WRT v24-sp2 (01/04/15) std” .
CMP
źródło
1

Jeśli zainstalowałeś rysia w systemie Ubuntu

lynx bot.whatismyipaddress.com
Binny
źródło
curl bot.whatismyipaddress.comteż działa.
Tomofumi,
0

użyj ip!

ip addr show

następnie poszukaj odpowiedniego adaptera (nie lo, i zwykle eth0) i zlokalizuj adres IP w pobliżu inet.

Eliran Malka
źródło
2
Pytanie dotyczy publicznych, a nie wewnętrznych adresów IP
Wolf
0

Może jestem trochę spóźniony, ale inxi może to zrobić dość łatwo.

zainstalować inxi

sudo apt install inxi

Następnie uruchom następujące polecenie

inxi -i

Przykład z moimi informacjami zablokowanymi przy użyciu zopcji kopiowania i wklejania do takich witryn:

~$ inxi -iz
Network:   Card: NVIDIA MCP77 Ethernet driver: forcedeth
           IF: eth0 state: up speed: 1000 Mbps duplex: full mac: <filter>
           WAN IP: <filter>
           IF: eth0 ip-v4: <filter> ip-v6-link: N/A

Gdzie jest napisane, <filter>gdzie pojawi się twój WAN IP, IPv4, adres MAC itp

Terrance
źródło
-2

Wystarczy wydać polecenie traceroute dla dowolnej witryny lub usługi.

sudo traceroute -I google.com

Linia 2 zawsze wydaje się moim publicznym adresem IP po przejściu przez bramę routera.

user@user-PC ~ $ sudo traceroute -I google.com
traceroute to google.com (173.194.46.104), 30 hops max, 60 byte packets
 1  25.0.8.1 (25.0.8.1)  230.739 ms  231.416 ms  237.819 ms
 2  199.21.149.1 (199.21.149.1)  249.136 ms  250.754 ms  253.994 ms**

Więc wykonaj polecenie bash.

sudo traceroute -I google.com | awk -F '[ ]' '{ if ( $2 ="2" ) { print $5 } }'

A wynik ...

(199.21.149.1)

Nie sądzę, aby poleganie na skryptach PHP, a ten rodzaj jest dobrą praktyką.

woahguy
źródło
jest to interesujące, choć bardzo powolne i nie dostaje mojego zewnętrznego
adresu
Ta odpowiedź jest zbyt niedokładna, aby była przydatna. W moim środowisku korporacyjnym w ogóle nie mam adresu IP. Jedynym sposobem, w jaki działa, jest zrozumienie, w jaki sposób tworzone są lokalne routery i przełączniki, a nawet wtedy może nie znajdować się na linii 2, w zależności od liczby przeskoków lokalnych. Nie ma sposobu na stworzenie spójnego algorytmu z tej techniki, a istnieje wiele innych rozwiązań, które są prostsze i za każdym razem uzyskają właściwą odpowiedź.
Mike S
Chociaż może działać w niektórych specjalnych konfiguracjach, tak naprawdę nigdy nie widziałem mojego zewnętrznego adresu IP w traceroute. Zwykle jest to albo moja brama (jeśli nie jestem za NAT), albo brama mojego routera, ale głównie inny router dalej.
mivk
alias ip = 'lynx --dump ipecho.net/plain '
phildobbin
-2

Polecenie bez zależności, z wyjątkiem 8.8.8.8 będącego GOogle DNS:

echo $(ip route get 8.8.8.8 | awk '{print $NF; exit}')
Rolf
źródło
Podaje tylko adres IP lokalnego interfejsu wychodzącego.
guntbert
polecenie pokazuje publiczny adres IP, jeśli uruchomię go na serwerze w chmurze. nie było to pytanie?
Rolf
Nie, gdzie widzisz „serwer w chmurze”?
guntbert