当添加网络接口时,我尝试从 udev 规则执行 shell 脚本,如下所示:
SUBSYSTEM=="net", ACTION=="add", KERNEL=="eth*", PROGRAM="/usr/local/bin/changemac.sh", NAME="eth0"
shell脚本只是使用ifconfig命令更改eth1的MAC地址,如下:
#!/bin/sh
/sbin/ifconfig eth0 hw ether 00:cc:dd:ee:ff:e1
echo "command return status $?" > /root/changemac.log
上面的脚本在命令提示符下工作正常,但不能从 udev 规则执行。我还尝试在 udev 规则中使用 RUN 而不是 PROGRAM 但没有成功:
SUBSYSTEM=="net", ACTION=="add", KERNEL=="eth*", RUN="/usr/local/bin/changemac.sh", NAME="eth0"
相同的脚本正在从我的自定义模块 udev 规则执行。
我认为有人必须知道为什么它不从网络 udev 规则执行。 :-)