起動時に実行される 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