web-dev-qa-db-ja.com

if-upおよびif-downスクリプトを使用して、eth1が接続されているときにワイヤレスを無効にする

ネットワークインターフェイスを構成しようとしています。イーサネットケーブルを接続するときにワイヤレスインターフェイスを無効にしたいのですが。イーサネットケーブルを抜くと、ワイヤレスインターフェイスが再び有効になります。

/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が常に表示されたり消えたりするのがわかります。私の質問は次のとおりです。

  1. これらのスクリプトをデバッグするにはどうすればよいですか。何が起こって何が実行されたのですか?
  2. 私が求めているものを実装する正しい方法は何ですか?
  3. また、イーサネットケーブルを外しても何も起こらないようです。インターフェイスが起動し、IPアドレスが割り当てられます。そのような場合は、ワイヤレスを使用できるように、ダウンさせたいと思います。

Debian不安定版を使用しています

4
Grzenio

これはデスクトップシステム用ですか? ネットワークマネージャー または wicd の使用を検討しましたか。これらのツールは、これらの多くを自動的に処理します。

これらのスクリプトをデバッグするにはどうすればよいですか。何が起こって何が実行されたのですか?

logger のようなものを使用して、デバッグ情報をsyslogに送信することをお勧めします。または、いくつかのエコーコマンドをあちこちに配置して、ファイルのどこかに書き込むこともできます。

2
Zoredache

ifplugdパッケージには、必要なすべてのスクリプトが含まれているようです。インストール後:

apt-get install ifplugd

eth1を設定ファイルに追加します/etc/default/ifplugdスクリプトを追加することなく、すべてが希望どおりに機能し始めました(すべてを初期状態にクリーンアップしました)。

みんな助けてくれてありがとう

3
Grzenio

イーサネットケーブルを接続したときにwlanインターフェイスが無効になるようにwpa_supplicantを構成するにはどうすればよいですか? で説明したように、ワイヤレスインターフェイスのメトリックを調整することが道のりだと思います。

0
womble

うーんコメントはコードが好きではありません。

#!/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

起動時にこれを実行するデーモンを作成します。

それがどのように機能するか教えてください

0
Bruce Grobler

問題は、ifup/downを再帰的に実行できないことです。 WANインターフェイスが起動したときに、VPNインターフェイスを起動したい場合と同様のことを試みました。

私の解決策は次のとおりです。

echo ifup vpn0 | at now >/dev/null 2>&1

ケーブルが抜き差しされたときにインターフェイスを自動的に上下させるには、同じ名前のパッケージのifplugdを使用します。

0
camh

/ etc/network /サブツリーに何かを設定したい場合は、おそらくwombleが示唆しているように、wifiルートのメトリックを増やすか、/ etc/network/if-up.d /のカスタムスクリプトを使用する他の手段を使用します。イーサネットインターフェイスが起動した場合、wifiインターフェイスがダウンします。

/etc/network/if-up.d/のスクリプトの作成に関する情報は、インターフェイスのマニュアルページの「IFACEOPTIONS」セクションにあります。

0
pjz