суббота, 29 ноября 2014 г.

Network Manager: Disable wireless if wired connection available

Дома у меня два варианта для подключения к сети: проводное (гигабитный ethernet) или беспроводное (wifi). В зависимости от того, где я нахожусь используется то или иное подключение.

Network Manager в Wheezy (а возможно и более новые версии) не умеет отключать беспроводное подключение, когда доступно проводное. Чтобы беспроводное подключение не мешало проводному я отключил автоматическое подключение к домашней точке доступа. Но в этом случае появляется необходимость каждый раз вручную подключаться к точке доступа. Так работало довольно долго, но сегодня я какой-то особенно ленивый и потому решил автоматизировать этот момент.

Одно из средств расширения функциональности Network Manager - dispatcher скрипты. Скрипт /etc/NetworkManager/dispatcher.d/50wired-xor-wireless, управляющий логикой подключения

#!/bin/sh

IFACE="$1"
ACTION="$2"

if [ ! -x "$(which nmcli 2>/dev/null)" ]; then
    exit 0
fi

case ${IFACE} in
    eth*)
        case ${ACTION} in
            up)
                nmcli nm wifi off
                ;;
            down)
                nmcli nm wifi on
                ;;
        esac
        ;;
esac

Чтобы NetworkManager использовал новый скрипт он должен иметь определенные права

chown root:root /etc/NetworkManager/dispatcher.d/50wired-xor-wireless
chmod 0755 /etc/NetworkManager/dispatcher.d/50wired-xor-wireless

Теперь при подключении ethernet-кабеля отключается wifi, а при отключении кабеля - wifi включается обратно. Воистину лень - двигатель прогресса.

Комментариев нет:

Отправить комментарий