Я хочу получить список всех доступных имен сетевых устройств на моем сервере Linux. Я понял, что
ifconfig
сделает эту работу, однако ifconfig выдает довольно много:
eth0 Link encap:Ethernet Hardware Adresse 08:00:27:fc:5c:98
inet Adresse:192.168.2.222 Bcast:192.168.2.255 Maske:255.255.255.0
inet6-Adresse: fe80::a00:27ff:fefc:5c98/64 Gültigkeitsbereich:Verbindung
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
RX packets:329 errors:0 dropped:0 overruns:0 frame:0
TX packets:177 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX bytes:41496 (40.5 KiB) TX bytes:32503 (31.7 KiB)
eth1 Link encap:Ethernet Hardware Adresse 08:00:27:e9:35:7d
[...]
eth2 Link encap:Ethernet Hardware Adresse 08:00:27:ff:db:fe
[...]
lo Link encap:Lokale Schleife
[...]
Чего я хочу добиться, так это список
eth0
eth1
eth2
lo
или даже лучше просто
eth0
eth1
eth2
Я предполагаю, что это может быть сделано с помощью комбинации «cat», «sed» и «grep», но я просто не имею ни малейшего понятия о том, как убрать ненужную информацию.
*nix
утилиты, но, к сожалению, это решение не работает на Mac :(ifconfig
отменен, используйтеip
вместо этогоifconfig -a | sed -E 's/[[:space:]:].*//;/^$/d'
Другой альтернативой будет:
Или, может быть:
источник
ls /sys/class/net
- лучшее решение в/etc/local.d
сценарияхopenrc
-sed
решения, приведенные выше, заканчиваются дополнительным:
в конце каждого интерфейса при запуске из/etc/init.d/local
(но не при непосредственном запуске сценария).-o
- не знал этогоПросто используйте / sys / class / net и удалите путь:
источник
Попробуй это:
cut -c 1-8
извлекает первые 8 символов каждой строкиsort
сортирует линииuniq -u
печатает только уникальные строки, которые удаляют пустые строки для строк описания, в которых первые восемь символов содержат только пробелыЭто работает на двух Linux-машинах, которые я пробовал, но на моем MacBookPro (OS X 10.6.4)
ifconfig
используются табуляции вместо пробелов, так что это немного сложнее:expand
преобразует вкладки в пробелыawk -F: '{print $1;}'
печатает первое поле перед двоеточием.источник
| grep -v lo
:-)или если вам нужен только эти *
источник
Использование
/sys
файловой системы:Используя ip и Perl:
источник
Вот один из способов извлечь имена интерфейсов из
ifconfig
вывода:Если вы хотите исключить определенные имена, один из способов - это дополнительный фильтр с
grep
:Если вы хотите исключить больше имен, добавьте больше
-e foo
вgrep
команду.источник
просто напечатать первый столбец:
Вы можете включить другие правила в awk, чтобы добавлять или удалять записи по мере необходимости.
РЕДАКТИРОВАТЬ: то же самое идет с ifconfig (как указал Дуг)
Это пример, исключающий интерфейс 'lo'
источник
awk
будет игнорировать начальный пробел и печатать первое слово в каждой последующей строке.обеспечивает
как вывод
источник
Несмотря на то, что существует приемлемое решение, я хотел бы представить свое решение для этого.
У меня есть несколько виртуальных интерфейсов, и я хотел бы получить список, который можно использовать в различных скриптах bash.
Меня не интересует петля, потому что я знаю, что она есть :)
Этот однострочник выполняет свою работу:
Производит вывод как:
Наслаждаться.
источник
Все вышеперечисленное решение отлично работает. Тем не менее вы можете попробовать это
Поскольку для
lo
обратной связи не назначен адрес HW, он не будет отображаться.Выход -
источник
Самое простое решение в человеке ifconfig (8)
Извлечение man ifconfig (8) http://www.manpagez.com/man/8/ifconfig/ :
Итак, чтобы получить список, используйте:
ifconfig -l
Имена будут разделены пробелом, поэтому вы должны использовать sed, чтобы заменить эти пробелы на \ n:
ifconfig -l | sed 's/ / /g'
источник
Улучшен:
источник
grep -v '^lo$'
; Ваша текущая команда исключит (гипотетический пример)logical
иridiculous
интерфейсы.Ни одно из вышеуказанных решений не помогло мне, вот мое решение:
lo
интерфейсВыходы:
источник
«ifcongif -l» должен сделать эту работу. его вывод похож на "lo0 gif0 stf0 en0 ..." без перевода строки.
Я нашел это на каком-то сайте, но больше не могу найти. и я все еще ищу значение этого флага "-l".
источник
Иногда nettools не устанавливается по умолчанию. Итак, мне нравится использовать встроенные команды, которые имеют больше гарантий, которые можно найти в / bin, / usr / bin и / usr / sbin, не беспокоясь о том, что после установки пакетов.
ip addr: показать / манипулировать маршрутизацией, устройствами, политикой маршрутизации и туннелями (адресом)
grep: найти пробел и что-нибудь после unitl:
cut: use (:) в качестве разделителя и получить поле 2
tr: удалить любые пробелы
источник
Проверено на macOS, сработало следующее. Мне нужно было найти все интерфейсы, которые были UP. Это основано на ответе Денниса Уильямсона выше.
ifconfig -a | grep UP | sed 's/:.*//;/^$/d'
источник
ifconfig | grep flags | awk -F: '{print $1;}'
источник