Befehl zur Ermittlung meiner öffentlichen IP?

636

Wenn ich bei Google nachschaue , kann ich meine öffentliche IP sehen. Gibt es etwas auf der Ubuntu-Kommandozeile, das mir die gleiche Antwort gibt?

kfmfe04
quelle
2
"mit dynamischer IP", "SSH mit einem anderen System über das Internet", "der Befehl, der die aktuelle PUBLIC IP anzeigt". Sehen Sie hier das Henne / Ei-Problem? Wie können Sie Befehle auf einem Remote-Server ausführen, ohne dessen Adresse zu kennen? Möglicherweise interessieren Sie sich mehr für Dienste wie no-ip.com / DynDNS.org.
Gertvdijk
man kann nicht SSH, ohne die öffentliche IP zu kennen mein Freund ... DynDNS kostet viel und No-IP harte Arbeit, aber die Situation lässt das nicht zu ... trotzdem wurde die Frage bereits beantwortet .. Danke für Ihren Vorschlag
Bhavesh Diwan
1
PS duckduckgo.com/?q=ip (keine Befehlszeile, aber kein großer Bruder G auch nicht)
Campa
1
Möglicherweise sollte dies eine separate Frage sein, aber ich möchte eine Warnung erhalten, wenn sich meine öffentliche IP-Adresse ändert. Im Moment benutze ich nur die folgenden Antworten in einer Crontab mit notify-send.
PJ Brunet
Großartige Lösungen finden Sie weiter unten. Für Centos Einsatz: ifconfig eth1 | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*inet *([^ ]+).*/\2/p}'wo eth1 das Netzwerkgerät o Interesse ist, können Sie die ‚ET1‘ string auslassen alle ips aller Adapter zu zeigen. Stattdessen \2können Sie auch schreiben \1 \2, um die Namen der einzelnen Adapter anzuzeigen.
Hafenkranich

Antworten:

916

Wenn Sie sich nicht hinter einem Router befinden, können Sie dies mit ermitteln ifconfig.

Wenn Sie sich hinter einem Router befinden, kennt Ihr Computer die öffentliche IP-Adresse nicht, da der Router eine Netzwerkadressumsetzung durchführt. Sie könnten einige Websites fragen , was Ihre öffentliche IP - Adresse verwendet curloder wgetund extrahieren Sie die Informationen , die Sie von ihm brauchen:

curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  

oder kürzer

curl https://ipinfo.io/ip
Michael K
quelle
27
ty - gleich nachdem ich gepostet hatte, stellte ich fest, dass ich nicht zuerst nach einer Antwort googelte : So sieht es aus. curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' Andere Möglichkeiten sind hier aufgelistet: go2linux.org/what-is-my-public-ip-address-with-linux
kfmfe04 16.01.12
1
sicher - Sie können es zu Ihrer Antwort hinzufügen
kfmfe04
1
Zur Verdeutlichung: Das war ein Hack, und zwar ein sehr hässlicher, also habe ich einen Schnitt gemacht, um es einfacher zu machen und etwas, an das sich die Leute erinnern können.
JRG
2
Genau wie Giovanni P sagte. Das OP sollte die akzeptierte Antwort ändern.
Loostro
36
curl -s ipinfo.io/ip
chao
385

Zum Ermitteln der externen IP können Sie entweder externe webbasierte Dienste oder systembasierte Methoden verwenden. Die einfachere Möglichkeit besteht darin, den externen Dienst zu verwenden. Die ifconfigbasierten Lösungen funktionieren in Ihrem System nur, wenn Sie sich nicht hinter a befinden NAT. Die beiden Methoden wurden weiter unten ausführlich erörtert.

Suche nach externer IP mit externen Diensten

Am einfachsten ist es, einen externen Dienst über einen Befehlszeilenbrowser oder ein Download-Tool zu verwenden. Da wgetes in Ubuntu standardmäßig verfügbar ist, können wir das verwenden.
Um Ihre IP zu finden, verwenden Sie

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

Mit freundlicher Genehmigung von :

Sie können auch lynx(Browser) oder curlanstelle von wgetmit geringfügigen Abweichungen zum obigen Befehl, um Ihre externe IP zu finden.

Verwenden Sie curl, um die IP zu finden:

$ curl https://ipecho.net/plain

Für eine besser formatierte Ausgabe verwenden Sie:

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

Eine schnellere (wohl schnellste) Methode digmit OpenDNSals Resolver:

Die anderen Antworten hier gehen alle über HTTP an einen Remote-Server. Einige von ihnen erfordern das Parsen der Ausgabe oder verlassen sich auf den User-Agent-Header, damit der Server im Klartext antwortet. Sie ändern sich auch sehr häufig (gehen runter, ändern ihren Namen, schalten Anzeigen, ändern möglicherweise das Ausgabeformat usw.).

  1. Das DNS-Antwortprotokoll ist standardisiert (das Format bleibt kompatibel).
  2. Historisch gesehen überleben DNS-Dienste (OpenDNS, Google Public DNS, ..) in der Regel viel länger und sind stabiler, skalierbarer und im Allgemeinen gepflegter als der heutzutage beliebte neue HTTP-Dienst whatismyip.com.
  3. (für diejenigen, die sich für die Mikrooptimierung interessieren), sollte diese Methode von Natur aus schneller sein (sei es nur um ein paar Mikrosekunden).

Verwendung von dig mit OpenDNS als Resolver:

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

111.222.333.444

Kopiert von: https://unix.stackexchange.com/a/81699/14497

Externe IP finden, ohne auf externe Dienste angewiesen zu sein

  • Wenn Sie den Namen Ihrer Netzwerkschnittstelle kennen

Geben Sie Folgendes in Ihr Terminal ein:

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

Im obigen ersetzt <interface_name>mit dem Namen Ihrer tatsächlichen Schnittstelle, zB: eth0, eth1, pp0, etc ...

Beispiel Verwendung:

$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
  • Wenn Sie den Namen Ihrer Netzwerkschnittstelle nicht kennen

Geben Sie Folgendes in Ihr Terminal ein (dabei werden der Name und die IP-Adresse jeder Netzwerkschnittstelle in Ihrem System abgerufen):

$ 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 }'

Beispiel Verwendung:

$ 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: Die Ausgaben sind indikativ und nicht real.

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

AKTUALISIEREN

  1. LANG=cwurde zu den ifconfigbasierten Verwendungen hinzugefügt , sodass immer die englische Ausgabe angezeigt wird, unabhängig von der Ländereinstellung.
saji89
quelle
1
@ Z9iT, sicher .. Es sollte in jeder Linux-Distribution funktionieren, vorausgesetzt, Sie haben wget installiert. Wie gesagt, wenn Sie bereits Locken oder Luchs zur Verfügung haben, verwenden Sie diese Option. Für die Installation benötigen Sie die Root-Berechtigung. Verwenden Sie alsosudo apt-get install wget
saji89
13
Die Befehle mit ifconfig funktionieren nur, wenn Sie sich nicht hinter einem NAT befinden.
Lukassteiner
1
Verwenden Sie einfach die -wCurl-Option anstelle von Echo :)curl -w '\n' ident.me
drAlberT
3
Dieser Vorschlag mit dig ist ziemlich nett unix.stackexchange.com/questions/22615/…
binaryanomaly
4
Die letzte Version ohne externe Dienste funktioniert nur, wenn Ihr Computer direkt mit dem Internet verbunden ist, was selten der Fall ist, ansonsten erhalten Sie nur Ihre lokale IP-Adresse.
Rubo77
117

Mein Favorit war schon immer:

curl ifconfig.me

einfach, leicht zu tippen.

Du musst zuerst curl installieren;)

Wenn ifconfig.me nicht verfügbar ist, versuchen Sie es mit icanhazip.com und / oder ipecho.net

curl icanhazip.com

oder

curl ipecho.net
Panther
quelle
3
@Z9iT, ich habe das gerade überprüft. Ja, es würde die externe IP in Ihrem Terminal ausgeben.
Saji89
7
Die Antwortzeit von ifconfig.mescheint etwas langsamer als ipecho.net.
Drew Noakes
3
Wenn Sie nicht haben, curlaber haben wget:wget -U curl -qO- ifconfig.me
Stéphane Chazelas
2
ifconfig.me scheint nicht zu reagieren :(
Asfand Qazi
1
@AsfandYarQazi - hier arbeiten. Sie können eine der Alternativen versuchen, icanhazip.com
Panther
60

icanhazip.com ist mein Favorit.

curl icanhazip.com

Sie können IPv4 explizit anfordern:

curl ipv4.icanhazip.com

Wenn Sie nicht haben curl, können Sie wgetstattdessen verwenden:

wget -qO- icanhazip.com
yprez
quelle
Vielen Dank! Ich musste viele der oben genannten Vorschläge ausprobieren, bis ich einige IPv6-fähige fand. Es ist eine Schande, dass solche Dienste normalerweise immer noch nur IPv4 sind.
Vladimír Čunát
48

Ich fand alles nervig und langsam, also schrieb ich mein eigenes. Es ist einfach und schnell.

Die API finden Sie unter http://api.ident.me/

Beispiele:

curl ident.me
curl v4.ident.me
curl v6.ident.me
Pierre Carrier
quelle
1
Woah, das war wirklich schnell!
Waldyrious
1
Ich finde die icanhazip.com-Lösung schneller und sie enthält eine neue Zeile in der Ausgabe.
Tyler Collier
1
Ja, es war in letzter Zeit tatsächlich schneller. Ich habe gerade meine Lösung optimiert.
Pierre Carrier
2
Ein dickes Lob! 2 Jahre und Sie pflegen es immer noch. Gut gemacht. "IDENTify ME" fällt mir ein, wenn ich einen IP-Check benötige :)
Mohnish
aws ist schneller time curl http://checkip.amazonaws.com-> 0.91svs .241sfür ident.meLass uns einfach beten, dass aws nicht untergeht;)
Avindra Goolcharan
42

Sie könnten eine DNS-Anfrage anstelle einer HTTP-Anfrage verwenden, um Ihre öffentliche IP herauszufinden:

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

Es verwendet resolver1.opendns.comDNS-Server, um den magischen myip.opendns.comHostnamen in Ihre IP-Adresse aufzulösen .

jfs
quelle
3
Das geht wirklich schnell. Ich habe eine Aufwärmübung durchgeführt, dann jeweils 10 Aufwärmübungen und curl icanhazip.com. Durchschnitt für die curlVersion: 174ms. Durchschnitt für die reine DNS-Version: 9 ms. ~ 19x schneller. Siehe auch: unix.stackexchange.com/a/81699/8383
Adam Monsen
1
@AdamMonsen Vielen Dank für den Link. Bei der Verwendung von DNS (wie die von Ihnen verknüpfte Antwort besagt) handelt es sich um eine Standardantwort (die sich wahrscheinlich nicht ändert), und der Dienst (OpenDNS) bleibt möglicherweise länger als die meisten seiner http-Alternativen. Die Zeit, die für die Anforderung benötigt wird, wird möglicherweise von der Startzeit des Befehls überschattet.
jfs
Ja. Es würde mich nicht wundern, wenn curlselbst langsamer ist als dig. Selbst wenn sie so ähnlich wie möglich umgeschrieben curlwürden , wären sie immer noch langsamer; Es verwendet HTTP ( einschließlich DNS) und dignur DNS.
Adam Monsen
22

Amazon AWS

curl http://checkip.amazonaws.com

Beispielausgabe:

123.123.123.123

Ich mag es weil:

  • es gibt nur die Klartext-IP zurück, sonst nichts
  • Es stammt von einem bekannten Anbieter, der wahrscheinlich nicht so schnell offline gehen wird
Ciro Santilli ist ein Schauspieler
quelle
18

Das, was ich benutze, ist:

wget -O - -q icanhazip.com

Ja, du kannst eine IP haben :-)

Flamme
quelle
3
Ich bevorzuge, dass curl icanhazip.commanchmal wgetnur einer verfügbar ist, manchmal aber auch keiner wgetverfügbar ist und curlIhre einzige Option ist (wie OS / X). So oder so curl icanhazip.comist es fast so einfach, curl ifconfig.meaber viel lustiger ;-)
TryTryAgain
11

Tippen Sie dies genau ein, drücken Sie Enterwo angezeigt:

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

Dadurch wird manuell eine HTTP-Anforderung gesendet, die Ihre IP am Ende von a zurückgibt HTTP/1.1 200 OK reply

Beispielausgabe:

$ 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
quelle
6
Nizza, das hat gut funktioniert, es war ein Vorteil für mich, Curl nicht installieren zu müssen: Ein Liner: printf "GET / plain HTTP / 1.1 \ nHOST: ipecho.net \ nBROWSER: web-kit \ n \ n" | nc ipecho.net 80
Ozone
9

Ein weiteres schnelles (kann relativ gesehen das schnellste sein)

curl ipecho.net/plain
Mohnish
quelle
9

Dafür wurde STUN erfunden. Als Client können Sie eine Anfrage an einen öffentlich zugänglichen STUN-Server senden und die IP-Adresse, die er sieht, zurückgeben lassen. So ähnlich wie whatismyip.com auf niedriger Ebene, da es kein HTTP und keine intelligent gestalteten DNS-Server verwendet, sondern das blitzschnelle STUN-Protokoll.

Verwenden stunclient

Wenn Sie stunclient( apt-get install stuntman-clientunter debian / ubuntu) installiert haben , können Sie einfach Folgendes tun:

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

Wo A.B.C.Dist die IP-Adresse Ihres Rechners im lokalen Netz und wo W.X.Y.Zsind die IP-Adressenserver, die Websites von außen sehen (und die, die Sie suchen)? Mit können sedSie die Ausgabe oben auf nur eine IP-Adresse reduzieren:

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

Ihre Frage war jedoch, wie Sie es über die Befehlszeile finden, was die Verwendung eines STUN-Clients möglicherweise ausschließt. Also frage ich mich ...

Verwenden bash

Eine STUN - Anfrage an einen externen STUN - Server handgefertigt, versandt, mit netcatund werden mit nachbearbeitet dd, hexdumpund sedwie so:

$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/'

Das Echo definiert eine binäre STUN-Anfrage (0x0001 zeigt Binding Request an) mit der Länge 8 (0x0008) mit dem Cookie 0xc00cee und einigen eingefügten Dingen von wireshark. Nur die vier Bytes, die die externe IP darstellen, werden aus der Antwort entnommen, bereinigt und gedruckt.

Arbeiten, aber nicht für den produktiven Einsatz empfohlen :-)

PS: Viele STUN-Server sind verfügbar, da dies eine Kerntechnologie für SIP und WebRTC ist. Die Verwendung einer von Mozilla sollte aus Datenschutzgründen sicher sein, Sie können jedoch auch eine andere verwenden: STUN-Serverliste

Victor Klos
quelle
+1 für die geekiest und tatsächlich apropos Technologie. Die http-Abfrage funktioniert, was ich mein ganzes Leben lang verwendet habe, aber ich mag, dass tatsächlich einige Gedanken in die Frage gestellt wurden. Ich wusste das nicht. Vielen Dank!
Mike S
7

Ich habe einen blöden Dienst dafür per Telnet. Etwas wie das:

telnet myip.gelma.net

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

Fühlen Sie sich frei, es zu benutzen.

Gelma
quelle
5

Sie können eine Web - Seite mit nur bash lesen, ohne 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
quelle
Dies kombiniert mit checkip.amazonaws.comist das schnellste für mich
Avindra Goolcharan
1
@ AvindraGoolcharan versuchen Sie eine DNS-Anfrage
jfs
2

Für diejenigen von uns mit Login-Zugang zu unseren Routern ist die Verwendung eines Skripts, um den Router nach seiner WAN-IP-Adresse zu fragen, die effizienteste Methode, um die externe IP-Adresse zu ermitteln. Das folgende Python-Skript druckt beispielsweise die externe IP für meinen Medialink MWN-WAPR300N-Router aus:

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)

Beachten Sie, dass dies nicht sehr sicher ist (wie dies bei Klartext-Anmeldeinformationen und der Anmeldung bei den meisten Routern der Fall ist) und auf keinen Fall portierbar ist (muss für jeden Router geändert werden). Es ist jedoch sehr schnell und eine absolut vernünftige Lösung für ein physikalisch sicheres Heimnetzwerk.

Um das Skript für einen anderen Router anzupassen, empfehle ich, das Tamperdata-Addon in Firefox zu verwenden, um zu bestimmen, welche HTTP-Anforderungen zu stellen sind.

Cronburg
quelle
2
Sie sollten versuchen, die IP-Adresse des Routers grammatikalisch zu ermitteln. Zum Beispiel router = subprocess.check_output(['ip', '-o', 'ro', 'list', '0.0.0.0/0']).split()[2].
Cristian Ciupitu
2

Diese erhalten die lokalen IPs:

ifconfig

oder für kürzere Ausgabe:

ifconfig | grep inet

ebenfalls

ip addr show

und wahrscheinlich:

hostname -I

Dies sollte die externe IP erhalten

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

NB Wenn Ihnen die Installation nichts ausmacht, gilt Folgendes curl:

curl http://smart-ip.net/myip
Wilf
quelle
1
ifconfig | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*addr: *([^ ]+).*/\1,\2/p}'druckt die lokalen Schnittstellen und die entsprechenden V4-IPs aus
Hannu,
1
ifconfig | sed -nre '/^[^ ]+/{N;N;s/^([^ ]+).*addr: *([^ ]+).*addr: *([^ ]+).*/\1,\2,\3/p}'- v4 und v6 IPs.
Hannu
2

Viele Heimrouter können von UPnP abgefragt werden:

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

Ergreifen Sie dann die IP-Adresse aus der Antwort.

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

quelle
2

Wenn Sie DD-WRT verwenden, funktioniert dies für mich:

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

oder

curl -s -u your_ddwrt_username:your_ddwrt_password http://192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print $2}'
  • Wobei 192.168.1.1 die Gateway / Router-LAN-IP-Adresse des DD-WRT-Routers ist.

  • Die -s- Komponente bedeutet lautlos (dh es werden keine Informationen zum Lockenfortschritt angezeigt).

  • Oh, ich sollte erwähnen, dass ich das oben genannte mit "DD-WRT v24-sp2 (01/04/15) std" verwende .
CMP
quelle
1

Wenn Sie lynx unter Ubuntu installiert haben, geben Sie Folgendes ein

lynx bot.whatismyipaddress.com
Binny
quelle
curl bot.whatismyipaddress.comfunktioniert auch.
Tomofumi
0

verwenden ip!

ip addr show

Suchen Sie dann nach dem entsprechenden Adapter (nicht lound normalerweise eth0) und suchen Sie die IP-Adresse in der Nähe inet.

Eliran Malka
quelle
2
Die Frage ist über öffentliche nicht interne IP-Adressen
Wolf
0

Vielleicht bin ich etwas spät dran, aber inxi kann das ziemlich einfach.

Installieren inxi

sudo apt install inxi

Führen Sie dann den folgenden Befehl aus

inxi -i

Beispiel, bei dem meine Informationen mit der folgenden zOption zum Kopieren und Einfügen auf Websites gesperrt wurden :

~$ 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

Dort, wo es heißt, <filter>wird Ihre WAN-IP, IPv4, MAC-Adresse usw. angezeigt

Terrance
quelle
-2

Geben Sie einfach eine Traceroute für eine Website oder einen Dienst aus.

sudo traceroute -I google.com

Zeile 2 scheint immer meine öffentliche IP-Adresse zu sein, nachdem sie an meinem Router-Gateway vorbeigegangen ist.

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**

Also, mach einen bash Befehl.

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

Und die Ausgabe ...

(199.21.149.1)

Ich glaube nicht, dass man sich auf PHP-Skripte verlässt, und die Art ist eine gute Praxis.

Woahguy
quelle
das ist interessant, wenn auch sehr langsam und bekommt meine externe ip nicht so
rubo77
Diese Antwort ist zu ungenau, um nützlich zu sein. In meinem Unternehmensumfeld erhalte ich überhaupt keine IP-Adresse. Das funktioniert nur, wenn Sie wissen, wie Ihre lokalen Router und Switches hergestellt werden, und selbst dann möglicherweise nicht in Zeile 2, abhängig von der Anzahl der lokalen Hops, durch die Sie springen. Es gibt keine Möglichkeit, aus dieser Technik einen kohärenten Algorithmus zu machen, und es gibt viele andere Lösungen, die einfacher sind und Ihnen jedes Mal die richtige Antwort liefern.
Mike S
Obwohl es in einigen speziellen Konfigurationen funktioniert, habe ich meine externe IP in einer Traceroute noch nie gesehen. Es ist normalerweise entweder mein Gateway (wenn ich nicht hinter NAT bin) oder das Gateway meines Routers, meistens aber ein anderer Router, der weiter entfernt ist.
Mivk
alias ip = 'lynx --dump ipecho.net/plain '
phildobbin
-2

Ein Befehl ohne Abhängigkeiten, mit Ausnahme von 8.8.8.8 als GOogle DNS:

echo $(ip route get 8.8.8.8 | awk '{print $NF; exit}')
Rolf
quelle
Hier erfahren Sie nur die IP-Adresse Ihrer lokalen ausgehenden Schnittstelle.
guntbert
Der Befehl zeigt die öffentliche IP-Adresse an, wenn ich sie auf einem Cloud-Server ausführe. War das nicht die Frage?
Rolf
Nein, wo siehst du "Cloud Server"?
guntbert