O script a seguir, inserido /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired
, funciona principalmente - desativa a conexão sem fio, mesmo quando eu quero compartilhar com a conexão sem fio ou vice-versa.
Para fazer isso, execute o seguinte comando no terminal:
sudo nano /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired
E cole o seguinte código no editor de texto.
#!/bin/sh
myname=${0##*/}
log() { logger -p user.info -t "${myname}[$$]" "$*"; }
IFACE=$1
ACTION=$2
release=$(lsb_release -s -c)
case ${release} in
trusty|utopic) nmobj=nm;;
*) nmobj=radio;;
esac
case ${IFACE} in
eth*|usb*|en*)
case ${ACTION} in
up)
log "disabling wifi radio"
nmcli "${nmobj}" wifi off
;;
down)
log "enabling wifi radio"
nmcli "${nmobj}" wifi on
;;
esac
;;
esac
Salve e saia.
Observe as seguintes condições no script, conforme documentado na página de manual do NetworkManager :
Cada script deve ser:
- um arquivo regular,
- possuído pela raiz,
- não gravável por grupo ou outro,
- não definido,
- e executável pelo proprietário.
Em vez de nmcli radio wifi off
(ou nmcli nm wifi off
para versões mais antigas do NetworkManager), também existe rfkill block wifi
. No entanto, se rfkill
for usado em vez de nmcli
, as versões mais recentes do NetworkManager reativarão o wifi durante a inicialização.
rfkill unblock wifi
depois que você se conectaeth0
e deseja compartilhar erfkill block wifi
quando termina?CONNECTION_UUID
para o identificador dessa conexão. Eu estava pensando que o script poderia fazer algo como apenas desativar o Wi-Fi para a conexão que declarei a conexão com fio "padrão", mas deixá-lo ativado seeth0
for ativado por uma conexão diferente. Eu não tentei, então não sei se funciona. Mas o seu argumento sobre apenas controlá-lo manualmente é bom.eth0|usb0)
também para desativar / ativar o WiFi quando o tethering USB estiver ativado / desativado.nmcli nm wifi off
enmcli nm wifi on
. Mas não tenho nenhuma razão específica para acreditar que os comandos nmcli sejam melhores. Eu só queria fazer tudo da maneira do NetworkManager.