使用命令行在 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 和以太网的脚本

断开 wifi

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 

相关内容