Это показывает мой внутренний (для моего маршрутизатора) IP-адрес (например, 192.168.1.xxx), а не внешний IP-адрес. (Как и большинство других ответов ниже.)
ShreevatsaR
2
У меня не сработало :(
Навид Аббас
2
ifconfigпоказывает все интерфейсы и их IP-адреса
Aralar
4
echo Внешний IP:curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
grigb
30
Он менялся годами, для интерфейса Wi-Fi по умолчанию используется ipconfig getifaddr en0
Марек Шмальк,
98
Следующее работает для меня на 10,8 и 10,10 Йосемити.
На мой взгляд, это должен быть принятый ответ, так как он не требует спецификаций проводной и беспроводной связи.
Эрик Номич
@ErikNomitch, кроме того, что дает мне 2 с этим ответом
Зак Лисобей
Ах, я отступаю тогда. @ZachLysobey
Эрик Номич
это лучший общий подход, но иногда нужно сделать немного больше раздумий перед awk, чтобы получить правильный ответ, и правильный ответ может отличаться.
Учуугака
Я добавил сценарий, который, надеюсь, должен решить эту проблему.
Тип 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: 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}}
Обратите внимание, что вышеприведенное, хотя и является командой командной строки, также является интерактивным (поэтому вы запускаете, scutilа затем вводите в него свои собственные команды). Первая showкоманда сообщает вам имя основного интерфейса для ОС (т. Е. Это будет верхний список в окне «Системные настройки / Сетевые настройки»), а также IP-адрес маршрутизатора по умолчанию. Вторая showкоманда принимает State:/Network/Interface/<ifname>/IPv4аргумент (в данном случае en0) и дает вам назначенные ей IP-адреса. Вы ищете адрес в массиве адресов, две другие записи - широковещательные адреса и маски сети.
Надеюсь, это поможет, но если что-то не ясно, дайте мне знать.
Спасибо за этот ответ. Я написал быстрый скрипт, чтобы получить 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})"
DC_
4
Чтобы получить IP-адрес вашего компьютера, подключенного к Интернету, вот рабочий рецепт:
Он должен работать, даже если у вас есть несколько активных интерфейсов, даже если у вас есть интерфейсы, вы не знаете, какой из них является шлюзом по умолчанию.
Это получает IP-адрес внутренней сети (например 192.168.0.*), не внешний, доступный для Интернета.
SimplGy
Спасибо за этот отзыв. Не могли бы вы сказать, на какой версии ОС вы находитесь? Не могли бы вы предоставить мне выход netstat -nr | grep default?
дан
Это получает IP интерфейса, который обслуживает входящий / исходящий трафик. Если вы находитесь за NAT, это даст вам адрес локальной сети, а не адрес глобальной сети. Но это может быть полезно для многих целей и не распространяется на сеть.
folex
1
Просто для записи, вы можете сделать bash-скрипт со следующим содержимым, которое даст вам ваш внешний IP-адрес
Ответы:
Используйте
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 Йосемити.
Если вы обнаружите, что приведенное выше дает более одного ответа, сохраните следующее в сценарии и запустите его вместо
ip_address.sh
источник
Просто введите
curl ifconfig.me
в терминал.источник
ipconfig getifaddr en0
для локального IP.У меня это настроено в точечном файле .aliases для частого поиска ip:
источник
Вы можете сделать следующее:
Тип
ifconfig
илиifconfig -a
. Эта команда показывает вам список интерфейсов вместе с их IP и MAC-адресами (последний только, если применимо). Вы также можете ввестиifconfig en0
илиifconfig en1
для конфигурации только определенного интерфейса (как кто-то сказал в своих ответах, en0 - это обычно проводной Ethernet, а en1 - интерфейс WiFi).В качестве альтернативы,
netstat -i
перечислит все интерфейсы и покажет вам IP-адреса, которые вы назначили каждому из них.Как правило, когда у вас на сервере работает демон SSH, он будет прослушивать все доступные интерфейсы, т.е. Вы можете использовать любой IP-адрес, настроенный на вашем компьютере, для подключения к этому компьютеру через SSH (это, очевидно, подчиняется правилам брандмауэра). Если вам нужно то, что ОС называет основным интерфейсом и основным IP-адресом, вы можете использовать
scutil
команду следующим образом:Обратите внимание, что вышеприведенное, хотя и является командой командной строки, также является интерактивным (поэтому вы запускаете,
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-адрес вашего компьютера, подключенного к Интернету, вот рабочий рецепт:
Он должен работать, даже если у вас есть несколько активных интерфейсов, даже если у вас есть интерфейсы, вы не знаете, какой из них является шлюзом по умолчанию.
источник
192.168.0.*)
, не внешний, доступный для Интернета.netstat -nr | grep default
?Просто для записи, вы можете сделать bash-скрипт со следующим содержимым, которое даст вам ваш внешний IP-адрес
источник
wget
не является частью macOS и должен быть установлен из стороннего источника.curl -s http://ipecho.net/plain; echo