eth0が起動したらすぐに何らかの操作を実行する

eth0が起動したらすぐに何らかの操作を実行する

eth0 が起動していることを必要とするルーチンを実行する必要があります。それを /etc/rc.local に記述しようとしましたが、eth0 がまだ初期化されていないため、実行できませんでした。

eth0 が起動していることが検出された時点でスクリプトを開始できるように、システムのイベント ディスパッチャーに接続する方法はありますか?

答え1

私の知る限り、スクリプトを次の/etc/network/if-up.d/ディレクトリに配置する必要があります:

sudo cp /path/to/your_routine /etc/network/if-up.d/

次に、ファイルeth0でインターフェースを定義した後、次の行を追加します。/etc/network/interfaces

post-up /etc/network/if-up.d/your_routine

ここで、post-upcommand は、インターフェイスを起動した後にコマンドまたはシェル スクリプトを実行しますeth0(man interfaces詳細については、149 行目のどこかを参照してください)。

/etc/network/interfaces編集後のファイルの様子の例を次に示します。

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
name Ethernet LAN card
address 192.168.10.1
netmask 255.255.255.0
broadcast 192.168.10.255
network 192.168.10.0
gateway 192.168.10.254
post-up /etc/network/if-up.d/your_routine
# some more interfaces
auto eth1
iface eth1 inet dhcp
# ...

これらの変更を行った後、ネットワーク サービスを再起動します。

sudo service networking restart

関連情報