Enumere solo los nombres de dispositivos de todas las interfaces de red disponibles

Enumere solo los nombres de dispositivos de todas las interfaces de red disponibles

Quiero obtener una lista de todos los nombres de dispositivos de red disponibles en mi servidor Linux. Lo imaginé

ifconfig

haría el trabajo, sin embargo, ifconfig produce bastante resultado:

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  
          [...]

Lo que quiero lograr es una lista como

eth0
eth1
eth2
lo

o incluso mejor simplemente

eth0
eth1
eth2

Supongo que esto se puede hacer mediante una combinación de "cat", "sed" y "grep", pero simplemente no tengo ni idea de cómo eliminar la información innecesaria.

Respuesta1

Prueba esto:

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

Esto omitirá lo:

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

Respuesta2

Otra alternativa sería:

ip -o link show | awk -F': ' '{print $2}'

O tal vez:

ls /sys/class/net

Respuesta3

Simplemente use /sys/class/net y elimine la ruta:

$ basename -a /sys/class/net/*
eth0
eth1
lo
ppp0
tun0

Una forma más moderna sería utilizar la salida json de iproute y un analizador, como:

$ ip -j link |jq -r '.[].ifname'
lo
wlp0s20f3
enp0s31f6
virbr0
virbr0-nic

Lo que le permite filtrar la interfaz loopback:

$ ip -j link |jq -r '.[].ifname | select(. != "lo")'
wlp0s20f3
enp0s31f6
virbr0
virbr0-nic

Respuesta4

ls /sys/class/net/
eth0  eth1  eth2  lo

o si solo necesitas eth*

ls /sys/class/net/eth*
eth0
eth1
eth2

información relacionada