MACアドレスを変更するために、「ネットワーク」udevルールでシェルスクリプトを実行することはできません。

MACアドレスを変更するために、「ネットワーク」udevルールでシェルスクリプトを実行することはできません。

ネットワークインタフェースを追加するときは、次の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ルールで実行されていない理由を知る必要があると思います。 :-)

関連情報