Odpowiedzi:
Użyj ipconfig getifaddr en1
do połączenia bezprzewodowego lub ipconfig getifaddr en0
Ethernet.
Aktualizacja :
ipconfig getifaddr en0
jest domyślny dla interfejsu Wi-Fi.
ifconfig
pokazuje wszystkie interfejsy i ich adresy IP
curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
Poniższe działa dla mnie w wersji 10.8 i 10.10 Yosemite.
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
Jeśli powyższe informacje zawierają więcej niż jedną odpowiedź, zapisz następujące w skrypcie i uruchom je zamiast tego
#!/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
Po prostu wpisz curl ifconfig.me
terminal.
ipconfig getifaddr en0
dotyczy lokalnego adresu IP.
Możesz wykonać następujące czynności:
Wpisz ifconfig
lub ifconfig -a
. To polecenie wyświetla listę interfejsów wraz z ich adresami IP i MAC (ten ostatni tylko, jeśli dotyczy). Możesz także wpisać ifconfig en0
lub tylko w ifconfig en1
celu konfiguracji konkretnego interfejsu (jak ktoś powiedział w swoich odpowiedziach, en0 to zazwyczaj przewodowy Ethernet, podczas gdy en1 to interfejs WiFi).
Alternatywnie, netstat -i
wyświetli listę wszystkich interfejsów i pokaże adresy IP, które przypisałeś każdemu z nich.
Zazwyczaj, gdy demon SSH działa na urządzeniu, nasłuchuje na wszystkich dostępnych interfejsach, tj. możesz użyć dowolnego adresu IP skonfigurowanego na twoim komputerze, aby połączyć się z tym komputerem przez SSH (oczywiście, z zastrzeżeniem reguł zapory ogniowej). Jeśli szukasz tego, co system operacyjny nazywa głównym interfejsem i podstawowym adresem IP, możesz użyć następującego scutil
polecenia:
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
}
}
Pamiętaj, że powyższe, mimo że jest to polecenie wiersza polecenia, jest również interaktywne (więc uruchamiasz, scutil
a następnie wpisujesz w nim własne polecenia). Pierwsze show
polecenie podaje nazwę podstawowego interfejsu systemu operacyjnego (tzn. Będzie to ten znajdujący się na górze listy w oknie Preferencji systemowych / Preferencji sieciowych), a także adres IP domyślnego routera. Drugie show
polecenie pobiera State:/Network/Interface/<ifname>/IPv4
argument (w tym przypadku en0
) i podaje adresy IP przypisane do niego. Szukasz adresu w tablicy Adresy, pozostałe dwa wpisy to adresy rozgłoszeniowe i maski sieciowe.
Mam nadzieję, że to pomaga, ale jeśli coś nie jest jasne, daj mi znać.
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})"
Aby uzyskać adres IP komputera z dostępem do Internetu, oto działający przepis:
if=`netstat -nr | awk '{ if ($1 ~/default/) { print $6} }'`
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'
Powinno działać nawet wtedy, gdy masz aktywnych wiele interfejsów, nawet jeśli masz interfejsy, nie wiesz, który z nich jest domyślną bramą.
192.168.0.*)
nie zewnętrzny, widoczny w Internecie.
netstat -nr | grep default
?
Dla przypomnienia możesz stworzyć skrypt bash z następującą zawartością, która da ci twój zewnętrzny adres IP
#!/bin/bash
wget -qO - http://ipecho.net/plain; echo
wget
nie jest częścią systemu macOS i musi zostać zainstalowany ze źródła innego niż Apple.
curl -s http://ipecho.net/plain; echo