автоматическое переключение между Wi-Fi и Ethernet в Linux с помощью командной строки

автоматическое переключение между Wi-Fi и Ethernet в Linux с помощью командной строки

Я хочу переключаться между Wifi и ethernet в Linux (Ubuntu 10.04). Я искал много способов и обнаружил, что это можно сделать с помощью firestarter — автоматического переключения между проводными и беспроводными сетями.

Для этого мне нужно установить пакет firestarter в Ubuntu.

Это правильный способ переключения между eth0 и wifi? Я хотел реализовать это с помощью командной строки без установки каких-либо новых пакетов.

Помогите пожалуйста. Спасибо заранее.

решение1

Connman(1)может использоваться для установки приоритетов подключений, чтобы предпочесть проводные сети и автоматически подключаться к беспроводным сетям, когда проводное соединение недоступно. Он поддерживается Intel, поэтому может быть враждебным к сетевому оборудованию не Intel: Я не могу использовать, Connman(1)так как мой драйвер Wi-Fi не устанавливает флаги, которые Intel ожидает включить для адаптера. Я получаю ошибку «no carrier» и отсутствие подключения 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 и Ethernet.

Отключите 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 &

Подключить Ethernet

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

Отключить Ethernet

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

Связанный контент