Дополнительно
Как использовать ifconfig для отображения только активного интерфейса
По умолчанию ifconfig
покажет мне все доступные интерфейсы, но что если я хочу отобразить только активные
? Например, только en0
, как показано ниже.
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 14:10:9f:e0:eb:c9
inet6 fe80::1610:9fff:fee0:ebc9%en0 prefixlen 64 scopeid 0x4
inet X.X.X.X netmask 0xffffff00 broadcast 101.6.69.255
nd6 options=1<PERFORMNUD>
media: autoselect
**status: active**
en3: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether 32:00:14:e7:4f:80
media: autoselect <full-duplex>
**status: inactive**
Заметьте, ifconfig en0
не удовлетворит, en0
не всегда активен ;)
Я использую Mac OS X.
20
3
Если вы хотите выводить "запись" только в том случае, если она содержит
status: active
, то вы можете использовать что-то вроде этой программы awk в качестве фильтра для вывода ifconfig:Когда начинается каждая "запись" (строка пуста или не начинается с Tab), начните сохранять запись в буфер. Добавьте в этот буфер все последующие строки, начинающиеся с Tab. Следите за магической строкой
status: active
; если такая строка была замечена, выведите буфер (предыдущую "запись"), когда начнется новая "запись" (или закончится ввод).Сохраните приведенный выше текст программы в файл и используйте его следующим образом:
Или, если вы
chmod +x
файл, то вы можете немного упростить его:Читая ваши комментарии и вопрос, кажется, что вы хотите получить только те интерфейсы, которым назначен IP-адрес.
Это можно быстро сделать с помощью
ifconfig
иgrep
.Выполняем команду:
Должно получиться что-то похожее:
Это покажет каждую строку с именем интерфейса и IP, если он есть.
Некоторые более специфические REGEX могут дать вам именно то, что вам нужно.
Как это работает: