obtendo nomes de interface das linhas dmesg

1

Eu tenho algumas linhas como [17.440000] eth0: XYZCOMPANY ABC4353 Controlador sem fio 802.11

[17.540000] eth1: XYZCOMPANY ABC4353 Controlador sem fio 802.11

[17.640000] eth2: XYZCOMPANY ABC4353 Controlador sem fio 802.11

Eu preciso colocar eth0, eth1, eth2 em uma variável no shell script. Como você pode notar, todas as outras linhas como XYZCOMPANY ABC4353 permanecem constantes. Mas o nome da interface está sempre mudando. Eu preciso colocar esses nomes de interface em uma variável.

Obrigado!

    
por kumar 19.07.2010 / 13:58

3 respostas

2

Isso mostrará eth e wlan endereços com qualquer número de dígitos:

var=$(dmesg | grep -Eo '(eth|wlan)[[:digit:]]+')

Se você não precisar de wlan , poderá remover a alternativa. Não tenho certeza se o driver eth usa hexadecimal, mas você pode alterar "dígito" para "xdigit" se isso acontecer e precisar permitir mais de 10 intefaces.

    
por 19.07.2010 / 15:11
0

Esta solução também deve estar funcionando:

var=$(dmesg | grep "eth[0-9]: [A-Za-z0-9 ]* 802.11 Wireless Controller" | awk '{ print substr($3,0,5) }')

    
por 19.07.2010 / 14:51
0

Isso é ter algo como "eth0: eth1: eth2" em sua variável

var='awk /./'{print $3}' lala '
echo $var
    
por 19.07.2010 / 14:18