네트워크 인터페이스를 추가할 때 다음과 같은 udev 규칙에서 쉘 스크립트를 실행해 보았습니다.
SUBSYSTEM=="net", ACTION=="add", KERNEL=="eth*", PROGRAM="/usr/local/bin/changemac.sh", NAME="eth0"
쉘 스크립트는 다음과 같이 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 규칙에서 PROGRAM 대신 RUN을 사용해 보았지만 성공하지 못했습니다.
SUBSYSTEM=="net", ACTION=="add", KERNEL=="eth*", RUN="/usr/local/bin/changemac.sh", NAME="eth0"
내 사용자 정의 모듈 udev 규칙에서 동일한 스크립트가 실행되고 있습니다.
누군가가 네트워크 udev 규칙에서 실행되지 않는 이유를 알아야 한다고 생각합니다. :-)