从 dmesg 行获取接口名称

从 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 放入 shell 脚本中的变量中。您可以注意到,所有其他行(如 XYZCOMPANY ABC4353)保持不变。但接口名称不断变化。我需要将这些接口名称放入变量中。

谢谢!

答案1

这将显示任意位数的地址ethwlan

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

如果不需要,wlan您可以删除替代项。我不确定驱动eth程序是否使用十六进制,但如果是,您可以将“digit”更改为“xdigit”,并且您需要允许超过 10 个接口。

答案2

这个解决方案也应该有效:

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

答案3

也就是说,在你的变量中有类似“eth0: eth1: eth2”的内容

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

相关内容