「ip link」、「ip addr」、および「ip Route」コマンドを実行する前に、eth0インターフェイスをどのように待ちますか?

「ip link」、「ip addr」、および「ip Route」コマンドを実行する前に、eth0インターフェイスをどのように待ちますか?

起動時に Synology NAS で次のスクリプトを実行する必要があります。 Synology NASには、起動時にトリガーできる予約タスクが組み込まれています。

私が実行するスクリプトは次のとおりです。

#!/bin/sh

ip link add macvlan0 link eth0 type macvlan mode bridge
ip addr add 192.168.0.240/32 dev macvlan0
ip link set macvlan0 up
ip route add 192.168.0.240/28 dev macvlan0

しかし、これはうまくいかず、eth0インターフェイスがこれらのコマンドを受け入れる準備ができていない場合、タスクは非常に迅速に実行されるようです。

sleep 60すべてのコマンドの前に配置すると、ip *問題が解決します。しかし、私の仕事をする前にランダムな数秒を待つのは正しいとは思いません。

上記の要件を考慮して、コマンドをeth0実行できるようにインターフェイスが利用可能になるのを待つ最良の方法は何ですか?ip *

ベストアンサー1

eth0ステータスを確認し/sys/class/net/eth0/operstate、ネットワークインターフェイスが機能するまで待ちます。

while ! [ "$(cat /sys/class/net/eth0/operstate)" = "up" ] 
do
    echo  "waiting for eth0 to be up"
    sleep 2
done

ip link add macvlan0 link eth0 type macvlan mode bridge
ip addr add 192.168.0.240/32 dev macvlan0
ip link set macvlan0 up
ip route add 192.168.0.240/28 dev macvlan0

おすすめ記事