Перечислите только имена устройств всех доступных сетевых интерфейсов

Я хочу получить список всех доступных Названий Сетевого устройства на моем сервере 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

Я предполагаю, что это может быть сделано комбинацией "кошки", "sed" и "grep", но у меня нет просто подсказки того, как разделить uneccessary информацию.

21
задан 26.09.2016, 16:16

4 ответа

Дайте этому попытку:

ifconfig -a | sed 's/[ \t].*//;/^$/d'

Это опустит lo:

ifconfig -a | sed 's/[ \t].*//;/^\(lo\|\)$/d'
17
ответ дан 07.12.2019, 10:00

просто распечатать первый столбец:

netstat -a | awk '{print $1}'

можно включить другие правила в awk, чтобы добавить или удалить записи по мере необходимости.

Править: то же идет с ifconfig (как Doug, на которого указывают)

ifconfig | awk '{print $1}'

Это - пример, исключая интерфейс 'lo'

ifconfig | awk '{if ($1 != lo) print $1}'
1
ответ дан 07.12.2019, 10:00

Вот один способ извлечь имена интерфейса из ifconfig вывод:

ifconfig -a | sed -n 's/^\([^ ]\+\).*/\1/p'

Если Вы хотите исключить определенные имена, одним путем является дальнейший фильтр с grep:

ifconfig -a | sed -n 's/^\([^ ]\+\).*/\1/p' | grep -Fvx -e lo

Если Вы хотите исключить больше имен, добавьте больше -e foo к grep команда.

1
ответ дан 07.12.2019, 10:00

Попробуйте это:

ifconfig | cut -c 1-8 | sort | uniq -u
  • cut -c 1-8 извлекает первые 8 символов каждой строки
  • sort сортирует строки
  • uniq -u печать только уникальные строки, которые удалят пустые строки для строк описания, которые имеют только пробелы в их первых восьми символах

Это работает над двумя машинами Linux, которые я попробовал, но над моим MacBookPro (OS X 10.6.4), ifconfig вкладки использования вместо пробелов, таким образом, это немного более сложно:

ifconfig | expand | cut -c1-8 | sort | uniq -u | awk -F: '{print $1;}'
  • expand преобразовывает вкладки в пробелы
  • awk -F: '{print $1;}' печатает первое поле перед двоеточием.
6
ответ дан 07.12.2019, 10:00

Теги

Похожие вопросы