Linux下使用命令列自動切換Wifi和以太網

Linux下使用命令列自動切換Wifi和以太網

我想在 Linux (Ubuntu 10.04) 中切換 Wifi 和乙太網路。我搜尋了很多方法,發現可以使用firestarter——有線和無線網路之間的自動切換來完成。

為此,我需要在 Ubuntu 中安裝 firestarter 套件。

這是 eth0 和 wifi 之間切換的正確方法嗎?我想使用命令列來實現它,而不安裝任何新的軟體包。

請幫忙。先致謝

答案1

Connman(1)可用於優先考慮您的連接,以優先選擇有線網絡,並在有線連接不可用時自動連接到無線。它受英特爾支持,因此可能對非英特爾網路硬體產生敵意:我無法使用,Connman(1)因為我的 wifi 驅動程式不會設定英特爾期望啟用適配器的標誌。我收到“無運營商”錯誤並且沒有 WiFi 連線。不過,當我插入有線連接時,它似乎連接得很快。

您需要/etc/connman/main.conf/main.conf 進行以下配置:

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

確保僅連接 wifi 或乙太網路。然後,使用手冊頁所示的互動式connmanctl(1)會話首次連接到 wifi,或編輯在中找到的介面的設定檔/var/lib/connman(這對我來說似乎更容易,但需要重新啟動。)參見connman-service.config(5)

如果您ifupdown安裝了或其變體,您可以在安裝之前刪除它們以避免衝突connman(1)

答案2

我創建了用於連接和斷開 wifi 和以太網的腳本

斷開無線網路連接

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

連接無線網路

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 

相關內容