Назад | Перейти на главную страницу

получение имен интерфейсов из строк dmesg

У меня есть строки вроде [17.440000] eth0: XYZCOMPANY ABC4353 802.11 Wireless Controller

[17.540000] eth1: Контроллер беспроводной сети XYZCOMPANY ABC4353 802.11

[17.640000] eth2: Контроллер беспроводной сети XYZCOMPANY ABC4353 802.11

Мне нужно получить eth0, eth1, eth2 в переменную в сценарии оболочки. Как вы можете заметить, все остальные строки, такие как XYZCOMPANY ABC4353, остаются постоянными, но имя интерфейса постоянно меняется. Мне нужно передать имена интерфейсов в переменную.

Спасибо!

Это покажет eth и wlan адреса с любым количеством цифр:

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

Если тебе не нужно wlan вы можете удалить альтернативный. Я не уверен, что eth драйвер использует шестнадцатеричный формат, но вы можете изменить «цифру» на «xdigit», если это так, и вам нужно разрешить более 10 интерфейсов.

То есть в вашей переменной должно быть что-то вроде "eth0: eth1: eth2"

var=`awk /./'{print $3}' lala `
echo $var

Это решение тоже должно работать:

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