Hier wird meine interne (zu meinem Router) IP-Adresse angezeigt (z. B. 192.168.1.xxx), nicht die externe IP-Adresse. (Wie die meisten anderen Antworten weiter unten.)
ShreevatsaR
2
Hat bei mir nicht funktioniert :(
Naveed Abbas
2
ifconfigzeigt alle Schnittstellen und ihre IPs
Aralar
4
echo Externe IP:curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
grigb 16.08.16
30
Es hat sich seit Jahren geändert, 'ipconfig getifaddr en0' ist Standard für WLAN-Schnittstelle
Marek Szmalc
98
Folgendes funktioniert für mich am 10.8 und am 10.10 Yosemite.
Dies sollte meiner Meinung nach die akzeptierte Antwort sein, da es keine drahtgebundenen oder drahtlosen Spezifikationen erfordert.
Erik Nomitch
@ ErikNomitch, außer es gibt mir 2 mit dieser Antwort
Zach Lysobey
Ah, dann ziehe ich mich zurück. @ZachLysobey
Erik Nomitch
Dies ist der beste Gesamtansatz, aber manchmal muss man ein bisschen mehr grübeln, bevor awk die richtige Antwort erhält, und die richtige Antwort kann variieren.
Uchuugaka
Ich habe ein Skript hinzugefügt, das dieses Problem hoffentlich beheben sollte.
Brad Parks
43
Tippen Sie einfach curl ifconfig.medas Terminal ein.
Warum die Gegenstimme? Obwohl es sich um eine externe IP handelt, ist der Befehl gültig und funktioniert für meine SSH-Anmeldungen.
CousinCocaine
5
Dies ist die öffentliche IP-Adresse und was ich gesucht habe. ipconfig getifaddr en0ist für lokale IP.
abriggs
Auf HighSierra musste ich dies als SUDO ausführen. Außerdem wird die externe IP-Adresse aufgelistet. Die interne IP-Adresse finden Sie in der Antwort von Brad Parks
Vincent
19
Ich habe dieses Setup in einer .aliases-Dot-Datei für häufiges Nachschlagen von IP-Adressen:
alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
alias localip="ipconfig getifaddr en0"
Typ ifconfigoder ifconfig -a. Dieser Befehl zeigt Ihnen die Liste der Schnittstellen mit ihren IP- und MAC-Adressen an (letztere nur, falls zutreffend). Sie können auch ifconfig en0oder nur ifconfig en1für die Konfiguration einer bestimmten Schnittstelle eingeben (wie in den Antworten angegeben, ist en0 normalerweise das verkabelte Ethernet, während en1 die WiFi-Schnittstelle ist).
Alternativ netstat -iwerden alle Schnittstellen aufgelistet und die ihnen jeweils zugewiesenen IP-Adressen angezeigt.
Wenn ein SSH-Dämon auf einer Box ausgeführt wird, überwacht er normalerweise alle verfügbaren Schnittstellen, d. H. Sie können jede IP-Adresse verwenden, die auf Ihrem Computer konfiguriert ist, um über SSH eine Verbindung zu diesem Computer herzustellen (dies unterliegt natürlich den Firewall-Regeln). Wenn Sie nach dem suchen, was das Betriebssystem als primäre Schnittstelle und primäre IP-Adresse bezeichnet, können Sie den folgenden scutilBefehl verwenden:
MacBook:~ scutil> show State:/Network/Global/IPv4<dictionary>{PrimaryInterface: en0PrimaryService: C0550F84-5C07-484F-8D62-C8B90DC977D8Router:10.103.4.1}> show State:/Network/Interface/en0/IPv4<dictionary>{Addresses:<array>{0:10.103.4.234}BroadcastAddresses:<array>{0:10.103.4.255}SubnetMasks:<array>{0:255.255.255.0}}
Beachten Sie, dass der obige Befehl auch interaktiv ist, obwohl er ein Befehlszeilenbefehl ist (Sie führen ihn also aus scutilund geben dann seine eigenen Befehle ein). Der erste showBefehl teilt Ihnen den Namen der primären Schnittstelle für das Betriebssystem mit (dh diese steht in den Systemeinstellungen / Netzwerkeinstellungen ganz oben auf der Liste) sowie die IP-Adresse Ihres Standard-Routers. Der zweite showBefehl benötigt ein State:/Network/Interface/<ifname>/IPv4Argument (in diesem Fall en0) und gibt Ihnen die ihm zugewiesenen IP-Adressen an. Sie suchen nach der Adresse im Array "Adressen", die anderen beiden Einträge sind Broadcast-Adressen und die Netzmasken.
Hoffe das hilft, aber wenn irgendetwas nicht klar ist, lass es mich wissen.
Es sollte auch funktionieren, wenn Sie mehrere Schnittstellen aktiv haben, auch wenn Sie Schnittstellen haben, von denen Sie nicht wissen, welche das Standard-Gateway ist.
Dies erhält die interne Netzwerk-IP-Adresse (z. B .: 192.168.0.*)nicht die externe, die dem Internet ausgesetzt ist.
SimplGy
Vielen Dank für dieses Feedback. Könnten Sie mir sagen, auf welcher Version des Betriebssystems Sie sind? Könnten Sie mir die Ausgabe von liefern netstat -nr | grep default?
Dan
Dies ruft die IP der Schnittstelle ab, die eingehenden / ausgehenden Datenverkehr bedient. Wenn Sie sich hinter NAT befinden, wird Ihre LAN-Adresse und nicht die WAN-Adresse angegeben. Aber es kann für viele Zwecke nützlich sein und greift nicht nach dem Netzwerk.
Folex
1
Nur zur Veranschaulichung, Sie können ein Bash-Skript mit dem folgenden Inhalt erstellen, das Ihre externe IP-Adresse angibt
Antworten:
Verwenden Sie
ipconfig getifaddr en1
für drahtlose oderipconfig getifaddr en0
für Ethernet.Update :
ipconfig getifaddr en0
ist die Standardeinstellung für die WLAN-Schnittstelle.quelle
ifconfig
zeigt alle Schnittstellen und ihre IPscurl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
Folgendes funktioniert für mich am 10.8 und am 10.10 Yosemite.
Wenn Sie feststellen, dass das oben Gesagte mehr als eine Antwort liefert, speichern Sie Folgendes in einem Skript und führen Sie es stattdessen aus
ip_address.sh
quelle
Tippen Sie einfach
curl ifconfig.me
das Terminal ein.quelle
ipconfig getifaddr en0
ist für lokale IP.Ich habe dieses Setup in einer .aliases-Dot-Datei für häufiges Nachschlagen von IP-Adressen:
quelle
Sie können Folgendes tun:
Typ
ifconfig
oderifconfig -a
. Dieser Befehl zeigt Ihnen die Liste der Schnittstellen mit ihren IP- und MAC-Adressen an (letztere nur, falls zutreffend). Sie können auchifconfig en0
oder nurifconfig en1
für die Konfiguration einer bestimmten Schnittstelle eingeben (wie in den Antworten angegeben, ist en0 normalerweise das verkabelte Ethernet, während en1 die WiFi-Schnittstelle ist).Alternativ
netstat -i
werden alle Schnittstellen aufgelistet und die ihnen jeweils zugewiesenen IP-Adressen angezeigt.Wenn ein SSH-Dämon auf einer Box ausgeführt wird, überwacht er normalerweise alle verfügbaren Schnittstellen, d. H. Sie können jede IP-Adresse verwenden, die auf Ihrem Computer konfiguriert ist, um über SSH eine Verbindung zu diesem Computer herzustellen (dies unterliegt natürlich den Firewall-Regeln). Wenn Sie nach dem suchen, was das Betriebssystem als primäre Schnittstelle und primäre IP-Adresse bezeichnet, können Sie den folgenden
scutil
Befehl verwenden:Beachten Sie, dass der obige Befehl auch interaktiv ist, obwohl er ein Befehlszeilenbefehl ist (Sie führen ihn also aus
scutil
und geben dann seine eigenen Befehle ein). Der ersteshow
Befehl teilt Ihnen den Namen der primären Schnittstelle für das Betriebssystem mit (dh diese steht in den Systemeinstellungen / Netzwerkeinstellungen ganz oben auf der Liste) sowie die IP-Adresse Ihres Standard-Routers. Der zweiteshow
Befehl benötigt einState:/Network/Interface/<ifname>/IPv4
Argument (in diesem Fallen0
) und gibt Ihnen die ihm zugewiesenen IP-Adressen an. Sie suchen nach der Adresse im Array "Adressen", die anderen beiden Einträge sind Broadcast-Adressen und die Netzmasken.Hoffe das hilft, aber wenn irgendetwas nicht klar ist, lass es mich wissen.
quelle
echo "show State:/Network/Interface/$(echo 'show State:/Network/Global/IPv4' | scutil | grep 'PrimaryInterface ' | sed 's/ PrimaryInterface : //')/IPv4" | scutil | pcregrep -Mo1 " Addresses : <array> {\n 0 : ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})"
Hier ist ein Rezept, um die IP-Adresse Ihres Computers im Internet zu ermitteln:
Es sollte auch funktionieren, wenn Sie mehrere Schnittstellen aktiv haben, auch wenn Sie Schnittstellen haben, von denen Sie nicht wissen, welche das Standard-Gateway ist.
quelle
192.168.0.*)
nicht die externe, die dem Internet ausgesetzt ist.netstat -nr | grep default
?Nur zur Veranschaulichung, Sie können ein Bash-Skript mit dem folgenden Inhalt erstellen, das Ihre externe IP-Adresse angibt
quelle
wget
ist es kein Bestandteil von macOS und muss von einer Quelle installiert werden, die nicht von Apple stammt.curl -s http://ipecho.net/plain; echo