Linux でコマンドラインを使用して Wi-Fi とイーサネットを自動切り替えする

Linux でコマンドラインを使用して Wi-Fi とイーサネットを自動切り替えする

Linux (Ubuntu 10.04) で Wi-Fi とイーサネットを切り替えたいです。いろいろ方法を検索した結果、Firestarter (有線ネットワークと無線ネットワークの自動切り替え) を使用すればそれができることがわかりました。

このためには、Ubuntu に firestarter パッケージをインストールする必要があります。

これは eth0 と wifi を切り替える正しい方法でしょうか? 新しいパッケージをインストールせずに、コマンドラインを使用して実装したいと考えていました。

助けてください。よろしくお願いします

答え1

Connman(1)有線ネットワークを優先し、有線接続が利用できない場合はワイヤレスに自動接続するように接続の優先順位を設定するために使用できます。これは Intel によってサポートされているため、Intel 以外のネットワーク ハードウェアには悪影響を与える可能性がありますConnman(1)。Wi-Fi ドライバーが Intel がアダプターを有効にすると想定するフラグを設定しないため、使用できません。「キャリアなし」エラーが発生し、Wi-Fi 接続がありません。ただし、有線接続を接続すると、すぐに接続されるようです。

/etc/connman/main.conf/main.conf 次のように設定する必要があります:

  BackgroundScanning = false
  DefaultAutoConnectTechnologies = ethernet,wifi 
  PreferredTechnologies = ethernet,wifi
  SingleConnectedTechnology = true

wifi または ethernet のみが接続されていることを確認します。次に、connmanctl(1)man ページに示されている対話型セッションを使用して初めて wifi に接続するか、または にあるインターフェイスの設定ファイルを編集します/var/lib/connman(この方が簡単だと思いますが、再起動が必要です)。connman-service.config(5)

またはその派生版がインストールされている場合はifupdown、衝突を避けるためにインストール前に削除してください。connman(1)

答え2

Wi-Fiとイーサネットからの接続と切断のスクリプトを作成しました

Wi-Fiを切断する

killall wpa_supplicant
wirelessname=`ls /sys/class/net | grep wlan* | head -1`
ifconfig $wirelessname down

Wi-Fiを接続する

wirelessname=`ls /sys/class/net | grep wlan* | head -1`
ifconfig $wirelessname up > /dev/null 2>&1 &
killall wpa_supplicant > /dev/null 2>&1 &
iwconfig $wirelessname power off > /dev/null 2>&1 &
wpa_passphrase $1 $2 > /root/wps.conf
wpa_supplicant -Dwext -i$wirelessname -c/root/wps.conf > /dev/null 2>&1 &
sleep 5
dhclient -r > /dev/null 2>&1 &
dhclient $wirelessname > /dev/null 2>&1 &

イーサネットを接続する

ifconfig $(ip link show | grep eth | grep state | awk '{printf $2}'| sed -e 's/:$//') up
ifconfig $(ifconfig | grep eth | awk '{print $1}'| head -1 ) $(ifconfig  | grep Bcast | awk '{printf $2}' | cut  -c6-) up

イーサネットを切断する

ifconfig $(ifconfig | grep eth | awk '{print $1}' | head -1 )  down 

関連情報