ネットワークインターフェイスを構成しようとしています。イーサネットケーブルを接続するときにワイヤレスインターフェイスを無効にしたいのですが。イーサネットケーブルを抜くと、ワイヤレスインターフェイスが再び有効になります。
/etc/network/if-up.d/wlan-downを作成しました:
#!/bin/sh
[ "$IFACE" != "eth1" ] || exit 0
ifdown wlan0
exit 0
および/etc/network/if-down.d/wlan-up:
#!/bin/sh
[ "$IFACE" != "eth1" ] || exit 0
ifup wlan0
wpa_cli -i wlan0 reassociate
exit 0
しかし、それはまったく機能していないようです。 WPAそれでも常に接続を試みます。wlan0が常に表示されたり消えたりするのがわかります。私の質問は次のとおりです。
Debian不安定版を使用しています
これはデスクトップシステム用ですか? ネットワークマネージャー または wicd の使用を検討しましたか。これらのツールは、これらの多くを自動的に処理します。
これらのスクリプトをデバッグするにはどうすればよいですか。何が起こって何が実行されたのですか?
logger のようなものを使用して、デバッグ情報をsyslogに送信することをお勧めします。または、いくつかのエコーコマンドをあちこちに配置して、ファイルのどこかに書き込むこともできます。
ifplugd
パッケージには、必要なすべてのスクリプトが含まれているようです。インストール後:
apt-get install ifplugd
eth1を設定ファイルに追加します/etc/default/ifplugd
スクリプトを追加することなく、すべてが希望どおりに機能し始めました(すべてを初期状態にクリーンアップしました)。
みんな助けてくれてありがとう
イーサネットケーブルを接続したときにwlanインターフェイスが無効になるようにwpa_supplicantを構成するにはどうすればよいですか? で説明したように、ワイヤレスインターフェイスのメトリックを調整することが道のりだと思います。
うーんコメントはコードが好きではありません。
#!/bin/bash
interval=5
while [ 0 -lt 1 ]; do
ifconfig eth0 up
ifconfig eth0 | grep 'inet addr' | awk '{ print $2 }' | cut -c 6- > /tmp/eth0.stat
if [ -z /tmp/eth0.stat ]; then
ifconfig eth0 down
sleep $interval
else
echo "We have an address (`cat /tmp/eth0.stat`), looking good." > /var/log/eth0.stat.log
sleep 10
fi
done
起動時にこれを実行するデーモンを作成します。
それがどのように機能するか教えてください
問題は、ifup/downを再帰的に実行できないことです。 WANインターフェイスが起動したときに、VPNインターフェイスを起動したい場合と同様のことを試みました。
私の解決策は次のとおりです。
echo ifup vpn0 | at now >/dev/null 2>&1
ケーブルが抜き差しされたときにインターフェイスを自動的に上下させるには、同じ名前のパッケージのifplugdを使用します。
/ etc/network /サブツリーに何かを設定したい場合は、おそらくwombleが示唆しているように、wifiルートのメトリックを増やすか、/ etc/network/if-up.d /のカスタムスクリプトを使用する他の手段を使用します。イーサネットインターフェイスが起動した場合、wifiインターフェイスがダウンします。
/etc/network/if-up.d/のスクリプトの作成に関する情報は、インターフェイスのマニュアルページの「IFACEOPTIONS」セクションにあります。