Как найти мой IP-адрес из командной строки?

Я знаю, что вы можете сделать ifconfig | grep inet, но это показывает несколько адресов IPv4. Как я могу получить конкретную информацию для SSHing et al?

107 голосов | спросил JShoe 7 AM00000020000004031 2011, 02:32:40

6 ответов


105

Используйте ipconfig getifaddr en1 для беспроводной сети или ipconfig getifaddr en0 для ethernet.

ответил daviesgeek 7 AM00000030000005031 2011, 03:01:50
71

Для меня работает 10.8 и 10.10 Йосемити.

ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}' 
ответил Brad Parks 30 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 30 Sep 2014 21:16:02 +0400 2014, 21:16:02
23

Просто введите curl ifconfig.me в терминал.

ответил Kcidkcus 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 02 Sep 2014 05:46:39 +0400 2014, 05:46:39
15

Вы можете сделать следующее:

Введите 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-адреса. Вы ищете адрес в массиве Addresses, остальные две записи - это широковещательные адреса и сетевые маски.

Надеюсь, что это поможет, но если что-то неясно, дайте мне знать.

ответил mike 9 J0000006Europe/Moscow 2014, 14:18:34
14

У меня есть эта настройка в .aliases dotfile для частого поиска ip:

alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
alias localip="ipconfig getifaddr en0"
ответил thibmaek 30 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 30 Sep 2014 22:06:03 +0400 2014, 22:06:03
2

Чтобы получить IP-адрес вашего компьютера, обращенного к Интернету, рабочий получатель:

if=`netstat -nr | awk '{ if ($1 ~/default/) { print $6} }'`
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'

Он должен работать, даже если у вас несколько активных интерфейсов, даже если у вас есть интерфейсы, вы не знаете, какой из них шлюз по умолчанию.

ответил daniel Azuelos 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 02 Sep 2014 16:45:18 +0400 2014, 16:45:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132