Я хочу получить список всех доступных Названий Сетевого устройства на моем сервере 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 информацию.
Дайте этому попытку:
ifconfig -a | sed 's/[ \t].*//;/^$/d'
Это опустит lo
:
ifconfig -a | sed 's/[ \t].*//;/^\(lo\|\)$/d'
просто распечатать первый столбец:
netstat -a | awk '{print $1}'
можно включить другие правила в awk, чтобы добавить или удалить записи по мере необходимости.
Править: то же идет с ifconfig (как Doug, на которого указывают)
ifconfig | awk '{print $1}'
Это - пример, исключая интерфейс 'lo'
ifconfig | awk '{if ($1 != lo) print $1}'
Вот один способ извлечь имена интерфейса из ifconfig
вывод:
ifconfig -a | sed -n 's/^\([^ ]\+\).*/\1/p'
Если Вы хотите исключить определенные имена, одним путем является дальнейший фильтр с grep
:
ifconfig -a | sed -n 's/^\([^ ]\+\).*/\1/p' | grep -Fvx -e lo
Если Вы хотите исключить больше имен, добавьте больше -e foo
к grep
команда.
Попробуйте это:
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;}'
печатает первое поле перед двоеточием.