По умолчанию ifconfig
мне будут показаны все доступные интерфейсы, но что, если я просто хочу отобразить active
их? Мол, 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.
command-line
networking
osx
interface
qweruiop
источник
источник
ifconfig
реализации варьируются. Кроме того, почему использованиеifconfig
является требованием? Какова ваша конечная цель?Ответы:
Чтобы получить полное описание всех активных сервисов, попробуйте:
Это простое регулярное выражение должно отфильтровывать только активные интерфейсы и всю их информацию. Я полагаю, вы поместили псевдоним для этого в вашем файле ~ / .profile или ~ / .bash_profile (может быть, если он активен?)
Чтобы просто получить имя интерфейса (полезно для скриптов), используйте:
Вы должны установить pcregrep, чтобы это работало. Это на macports в пакете pcre. В качестве альтернативы, это должно работать с использованием GNU grep
grep -Pzo
вместо,pcregrep -M -o
но с остальными так же, но я не проверял это.источник
Если вы хотите напечатать «запись», только если она содержит
status: active
, то вы можете использовать что-то вроде этой awk- программы в качестве фильтра для вывода ifconfig :Когда начинается каждая «запись» (строка пуста или не начинается с табуляции), начинайте сохранять запись в буфере. Добавьте в этот буфер любые последующие строки, начинающиеся с табуляции. Наблюдайте за волшебной последовательностью
status: active
; если такая строка была замечена, распечатайте буфер (предыдущую «запись»), когда начинается новая «запись» (или ввод заканчивается).Сохраните приведенный выше текст программы в файл и используйте его так:
Или, если вы
chmod +x
файл, то вы можете немного упростить его:источник
Если вы не против некоторых скриптов bash, вы можете сделать это:
Это перечислит активные сетевые интерфейсы. Протестировано на Mac OS X 10.13.
Приятно то, что вам не нужно ничего устанавливать. Просто запустите выше в Терминале.
источник
ifconfig -lu
не будет работать на Debian. Но OP в любом случае использует MacOS, поэтому это решение будет работать на системах с BSDifconfig
. Я отправил другой ответ ниже, который делает то же самое без использованияifconfig -lu
Читая ваши комментарии и вопросы, кажется, что вы действительно хотите просто получить интерфейсы, которым назначен IP-адрес.
Вы можете сделать это быстро с
ifconfig
иgrep
.Выполнение команды:
Должен производить что-то похожее на:
Это покажет каждую строку с именем интерфейса и и IP, если они есть.
Некоторая более специфическая магия REGEX может дать вам именно то, что вам нужно.
источник
active
рассмотрение?Я хотел бы, чтобы вопрос был немного яснее. Предполагая, что под этим
Active interface only
вы подразумевали отображение только имени активных интерфейсов (в моем случаеUP
иRUNNING
статусаactive
) без каких-либо других подробностей. Тогда попробуйте это:Вывод будет выглядеть так:
Настройте
grep -v
поле и добавьте больше нежелательных интерфейсов, таких какloopback
-> иlo
т. Д., Если необходимо.Теперь, если вы хотите и вам нужно проверить, активны ли найденные интерфейсы в данный момент. Тогда мы можем просто передать их в качестве аргумента,
ifconfig <interface>
как показано ниже:[[ $(ifconfig en0 | grep -w active) ]] && echo "en0 is active"
Упрощение этого и реализация в функции:
Выполнение этой функции вернет только активные интерфейсы. В моем случае:
источник
Далее будут распечатаны только те интерфейсы, которые настроены на использование IP
источник
Получить ACTIVE интерфейс MAC только:
источник
ip
по умолчанию; для этого вам нужен HomeBrew, затем запуститеbrew install iproute2mac
один раз. Исходный код этого находится на github.com/brona/iproute2macКак это устроено:
источник
Это покажет состояние подключения к сети en0
источник