Как найти имя сетевого интерфейса по IP-адресу

Что такое команда терминала или как найти имя сетевого интерфейса (например, en0, en1, en3 en8 и т. д.) С IP-адреса. У меня есть IP-адрес, и мне нужно выяснить, какой IP-адрес назначен сетевому интерфейсу в macOS.

в macOS, но вы отметили Ubuntu и Linux. Что он? Я предполагаю, что ifconfig может дать вам какие-то результаты?

JNevill 11.04.2018 19:34

Да ... ifconfig покажет это, но также покажет другие вещи. Но мне просто нужно имя интерфейса en1, en2, например. Xxxxx 10.20.30.40 результаты должны быть en1 или en2

Skull 11.04.2018 19:44
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
815
3

Ответы 3

Я сейчас не перед компьютером, а что-то вроде

ifconfig | grep -b1 "youriphere" | awk 'NR==1{print $1}'

Должен получить вас в примерном.

Нет, это не так .. iost показывает результат - inet6, и если я удалю awk, он покажет - inet6 xxx :: xx: xxxxx: xxxxxxx prefixlen 64 защищенный идентификатор области 0xe inet 20.30.40.540 сетевая маска 0xfffffe00 широковещательная передача 100.100.100.100 Это не дает всю строку

Skull 12.04.2018 08:51

Правильный способ сделать это:

route -n get "yourIPhere" | awk '/interface: / {print $2}'

Другие ответы в основном игнорируют один вопрос. Подобный IP-адрес может быть сопоставлен, например, если сетевой интерфейс 172.16.1.100, IP-адрес 72.16.1.10 также будет сопоставлен. Вот мое решение :

ifconfig | grep -PB1 "[: ]72.16.1.10[^\d]" | grep -o "^\w*"
or
ifconfig | grep -PB1 "[: ]72.16.1.10[^\d]" | awk -F'[: ]' 'NR==1{print $1}'

Другие вопросы по теме