Відповіді:
Використовуйте ipconfig getifaddr en1
для бездротового зв'язку або ipconfig getifaddr en0
для Ethernet.
Оновлення :
ipconfig getifaddr en0
за замовчуванням для Wi-Fi інтерфейсу.
ifconfig
показує всі інтерфейси та їхні IP-адреси
curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
Наступні роботи для мене працюють 10,8 та 10,10 Йосеміті.
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
Якщо ви виявили, що наведене вище дає вам більше однієї відповіді, збережіть наступне у сценарії та запустіть його замість цього
#!/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
Просто введіть curl ifconfig.me
термінал.
ipconfig getifaddr en0
призначений для локальної IP.
Ви можете зробити наступне:
Введіть ifconfig
або ifconfig -a
. Ця команда показує вам список інтерфейсів разом з їх IP та MAC адресами (останній лише за наявності). Ви також можете ввести ifconfig en0
або ifconfig en1
для конфігурації певного інтерфейсу (як хтось сказав у своїх відповідях, en0, як правило, є дротовим Ethernet, тоді як en1 - інтерфейсом WiFi).
Як альтернатива, netstat -i
список усіх інтерфейсів та покаже IP-адреси, які ви призначили кожному з них.
Як правило, коли у вас є демон SSH, який працює на коробці, він прослуховуватиме всі доступні інтерфейси, тобто. ви можете використовувати будь-яку IP-адресу, налаштовану на вашій машині, для підключення до цієї машини через SSH (це, очевидно, підпорядковане правилам брандмауера). Якщо ви працюєте за тим, що ОС називає первинним інтерфейсом та первинною IP-адресою, ви можете використовувати таку scutil
команду:
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
}
}
Зауважте, що вищезазначене, хоч і є командним рядком, також є інтерактивним (тому ви запускаєте scutil
і потім вводите в нього власні команди). Перша show
команда повідомляє вам назву основного інтерфейсу для ОС (тобто це буде той, який знаходиться вгорі списку у вашому вікні Налаштування системи / Налаштування мережі), а також IP-адресу вашого маршрутизатора за замовчуванням. Друга show
команда бере State:/Network/Interface/<ifname>/IPv4
аргумент (в даному випадку en0
) і дає вам IP-адреси, призначені їй. Ви шукаєте адресу в масиві адреси, інші два записи - це трансляція адрес та мережевих масок.
Сподіваюся, що це допомагає, але якщо щось не зрозуміло, дайте мені знати.
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})"
Щоб отримати IP-адресу вашого комп’ютера, звернену до Інтернету, ось робочий прийом:
if=`netstat -nr | awk '{ if ($1 ~/default/) { print $6} }'`
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'
Він повинен працювати навіть у тому випадку, коли у вас є активне безліч інтерфейсів, навіть якщо у вас є інтерфейси, ви не знаєте, який саме є шлюзом за замовчуванням.
192.168.0.*)
, не зовнішню, що потрапляє до Інтернету.
netstat -nr | grep default
?
Тільки для запису ви можете зробити скрипт bash з наступним вмістом, який дає вам вашу зовнішню IP-адресу
#!/bin/bash
wget -qO - http://ipecho.net/plain; echo
wget
не є частиною macOS, і його потрібно встановлювати з джерела, що не належить Apple.
curl -s http://ipecho.net/plain; echo