Ich weiß, dass Sie das können ifconfig | grep inet, aber das zeigt Ihnen mehrere IPv4-Adressen. Wie bekomme ich die spezifische für SSHing et al?
Ich weiß, dass Sie das können ifconfig | grep inet, aber das zeigt Ihnen mehrere IPv4-Adressen. Wie bekomme ich die spezifische für SSHing et al?
Antworten:
Verwenden Sie ipconfig getifaddr en1für drahtlose oder ipconfig getifaddr en0für Ethernet.
Update :
ipconfig getifaddr en0 ist die Standardeinstellung für die WLAN-Schnittstelle.
ifconfigzeigt alle Schnittstellen und ihre IPs
curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
Folgendes funktioniert für mich am 10.8 und am 10.10 Yosemite.
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
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
#!/usr/bin/env bash
dumpIpForInterface()
{
IT=$(ifconfig "$1")
if [[ "$IT" != *"status: active"* ]]; then
return
fi
if [[ "$IT" != *" broadcast "* ]]; then
return
fi
echo "$IT" | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'
}
main()
{
# snagged from here: https://superuser.com/a/627581/38941
DEFAULT_ROUTE=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')
if [ -n "$DEFAULT_ROUTE" ]; then
dumpIpForInterface "$DEFAULT_ROUTE"
else
for i in $(ifconfig -s | awk '{print $1}' | awk '{if(NR>1)print}')
do
if [[ $i != *"vboxnet"* ]]; then
dumpIpForInterface "$i"
fi
done
fi
}
main
Tippen Sie einfach curl ifconfig.medas Terminal ein.
ipconfig getifaddr en0ist für lokale IP.
Sie können Folgendes tun:
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 : en0
PrimaryService : C0550F84-5C07-484F-8D62-C8B90DC977D8
Router : 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.
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:
if=`netstat -nr | awk '{ if ($1 ~/default/) { print $6} }'`
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'
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.
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
#!/bin/bash
wget -qO - http://ipecho.net/plain; echo
wgetist es kein Bestandteil von macOS und muss von einer Quelle installiert werden, die nicht von Apple stammt.
curl -s http://ipecho.net/plain; echo