どのパケット制御ネットワークインターフェイスが見つかりますか?

どのパケット制御ネットワークインターフェイスが見つかりますか?

起動時に実行される Debian パッケージがあります。

私はupstartを使っているのに必要だと思います。依存関係の追加起動設定として:

start on someProgram

どのプログラムなのかわかりませんが、使用せずにnetwork-manager無効になっています。私は次のことをしています:

ethernet=$(ifconfig -a | grep Ethernet | grep ^e | cut -d' ' -f1)
wifi=$(ifconfig -a | grep wl | cut -d' ' -f1)
ping -I $ethernet -c 1 8.8.8.8 \
  || ping -I $wifi -c 1 8.8.8.8 \
  || echo "not online"

問題は、プログラムが起動プロセスで早すぎるため、インターフェイスがifconfig常に表示されないことです。$wifi

ping -I $ethernet -c 1 8.8.8.8成功したはずだが失敗しました。

sleep 30これは非常にうまくping機能します。

期待どおりに機能するには、どのパッケージを待つ必要があるのか​​を知っていますか?

組み込みデバイスでUbuntu 14.04を使用しています。

3.0.36+ #16 SMP PREEMPT Tue Oct 31 19:17:57 EDT 2017 armv7l armv7l armv7l GNU/Linux

私はすでに答えを知っていると思いました。

パッケージの代わりにネットワークインタフェースを直接参照できることがわかりました。

start on (local-filesystems and net-device-up IFACE!=lo)

私はまだ私の状況に合わせて少し改善したいと思います。

なぜなら、私はethよりもwlanを待つのが好きですが、次のようなワイルドカードを使用できるかどうかはわかりません。IFACE=wlan*

しかし、これはインターフェイスが利用可能になるのを待つのではなく、ifconfigインターフェイスがインターネットに接続するのを待っているようです。

答え1

最後に、upstart辞書リリーススクリプトを使用して解決策を見つけました。

pre-start script
    while [ -z "$(ifconfig | grep wlan)" ]
    do
        sleep 1
    done
    sleep 5
end script

関連情報