udev规则如何通过执行脚本获取返回的businfo,然后在得到的返回值怎么填到KERNELS的属性值中去,完成网口的命名。Mac地址的方式相关,但是替换网卡和硬件会需要重新填写不利于批量生产

在传递参数给脚本的时候RUN+=1.sh 1,无法将参数1传递给执行的脚本,路径是对的。

要实现通过执行脚本获取返回的businfo并将其填入udev规则的KERNELS属性值中,可以按照以下步骤进行操作:

  1. 创建udev规则文件:首先,在/etc/udev/rules.d/目录下创建一个命名为70-persistent-net.rules的udev规则文件。

  2. 编写脚本:创建一个脚本,用于获取网卡的businfo并输出。例如,你可以使用以下Python脚本:

#!/usr/bin/env python

import subprocess

# 执行命令获取businfo
output = subprocess.check_output("command-to-get-businfo", shell=True)
businfo = output.decode().strip()

# 输出businfo
print(businfo)

将上述脚本中的command-to-get-businfo替换为你自己的命令,用于获取网卡的businfo。确保该脚本能够输出正确的businfo。

  1. 编写udev规则:在70-persistent-net.rules文件中,编写相应的udev规则,将获取到的businfo填入KERNELS属性值中。以下是一个示例:
ACTION=="add", SUBSYSTEM=="net", ENV{ID_MODEL_FROM_DATABASE}=="YourEthernetDevice", RUN+="/path/to/your/script.sh", KERNELS=="[your-original-KERNELS-value]", KERNEL=="eth*", NAME="your-interface-name"

注意,上述规则中的YourEthernetDevice需要替换为你的网卡设备的识别属性,/path/to/your/script.sh需要替换为你实际的脚本路径,并确保脚本具有可执行权限。

  1. 重启udev服务:重启udev服务以使新的规则生效。执行以下命令:
sudo service udev restart

以上步骤将根据执行脚本获取到的businfo填入udev规则的KERNELS属性值中,从而实现网口的命名。

请注意,如果你替换了网卡或硬件,businfo可能会发生变化,因此需要相应地更新udev规则中的设备信息。你可以在发生变化后执行脚本以获取新的businfo,并更新udev规则文件中的对应信息。