gpt4 book ai didi

linux - 在 Bash 脚本中获取以太网设备名称列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:07 24 4
gpt4 key购买 nike

我正在尝试创建一个 bash 脚本,在我的 PC 上创建一个以太网设备名称数组,而不是无线网卡。我想要一个名称列表,以便以后可以遍历它们。

例如 - 假设我有两个以太网 NIC - enp2s0 和 enp3s0 以及一个无线网卡 - wlp4s0

lscpi 我会看到

02:00.0 Ethernet controller: <truncated>
03:00.0 Ethernet controller: <truncated>
04:00.0 Network controller: Intel Corporation Wireless

同样ip a显示

1: lo: <truncated>
2: enp2s0: <truncated>
3: enp3s0: <truncated>
4: wlp4s0: <truncated>

如何创建一个名称数组以便我可以遍历它们?
enp2s0enp3s0

我已经想出如何找到第一个 NIC 使用

NIC=$(basename $(udevadm info -e | grep "DEVPATH=.*$(lspci | grep -m 1  Ethernet | cut -f 1 -d\ )/net" | cut -f 2 -d\ ))

但我不知道如何循环这种方法。关于如何在 bash 中执行此操作有什么建议吗?

谢谢

电车

最佳答案

nmcli 有一个可以轻松解析的输出,但您可能必须先安装它。

nmcli 设备 的示例输出:

DEVICE  TYPE      STATE        CONNECTION       
eno1 ethernet connected wired connection
wlp2s0 wifi unavailable --
lo loopback unmanaged --

要仅提取以太网设备的名称,请使用

nmcli device | awk '$2=="ethernet" {print $1}'

在此示例中,输出将为 eno1。您可以像往常一样在循环中使用该命令。
这里我们假设第一列没有像 *[]? 这样的特殊符号,这样我们就可以使用简单且可移植(但可能不安全)的构造 for variable in $(命令),

for device in $(nmcli device | awk '$2=="ethernet" {print $1}'); do
# stuff
done

关于linux - 在 Bash 脚本中获取以太网设备名称列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54761878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com