现在我搞了一个shell脚本可以输出0000:01:00.0的一系列bus号,如何通过这个号码来输出网卡名,最后用指令重新命名网口
不知道你这个问题是否已经解决, 如果还没有解决的话:首先,我们可以使用lspci
命令来获取系统中的所有设备的信息,包括网卡的bus号和名称。
lspci
执行该命令后,会输出类似以下的信息:
01:00.0 Ethernet controller: Intel Corporation Device 15b8 (rev 10)
02:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 Gigabit Ethernet PCIe
...
然后,我们可以通过解析lspci
的输出来获取指定bus号的网卡名称。可以使用grep
命令来定位相应的行,并使用awk
命令来提取网卡名称。
lspci | grep "01:00.0" | awk -F ": " '{print $2}'
以上命令中的"01:00.0"
是你要匹配的bus号,注意用双引号括起来。
接下来,我们可以使用ip
命令来重新命名网口。首先,我们需要停止对应网口的网络服务。
sudo systemctl stop NetworkManager.service
然后,使用ip
命令重新命名网口,例如将网口名称改为"eth0"。
sudo ip link set enp1s0f0 down
sudo ip link set enp1s0f0 name eth0
以上命令中的"enp1s0f0"是你要重命名的网口名称,"eth0"是你要设置的新的网口名称。
最后,我们可以重新启动网络服务。
sudo systemctl start NetworkManager.service
请注意,修改网口名称可能会导致网络连接断开,请确保通过其他方式可以恢复网络连接。
如果你想通过脚本实现这个功能,可以将以上命令封装到一个shell脚本中,并根据需要传递参数来执行不同的操作。
#!/bin/bash
businfo="01:00.0" # 要获取的网卡的bus号
newname="eth0" # 新的网卡名称
# 停止网络服务
sudo systemctl stop NetworkManager.service
# 通过bus号获取网卡名称
interface=$(lspci | grep "$businfo" | awk -F ": " '{print $2}')
# 重命名网口
sudo ip link set "$interface" down
sudo ip link set "$interface" name "$newname"
# 启动网络服务
sudo systemctl start NetworkManager.service
echo "网口 $interface 已重命名为 $newname"
这样,我们就可以通过指定的bus号来获取对应的网口名称,并使用指令重新命名该网口。请根据实际情况修改脚本中的bus号和新的网口名称。