¿Deshabilitar automáticamente wifi (inalámbrico) cuando está conectado?

26

¿Cuál es la mejor manera de desactivar automáticamente mi conexión Wifi / inalámbrica cada vez que conecto un cable Ethernet con cable? Me gustaría que se vuelva a habilitar cuando luego desconecte el cable.

Además, a veces me gusta compartir la conexión por cable con otros usuarios inalámbricos (o viceversa). Sería bueno si de alguna manera pudiera eximir estas configuraciones.

Estoy usando 11.10 Oneiric, que usa NetworkManager.

Richard Hansen
fuente

Respuestas:

31

La siguiente secuencia de comandos, en /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wiredsu mayoría, funciona: deshabilita la conexión inalámbrica incluso cuando quiero compartir el cableado con conexión inalámbrica o viceversa.

Para hacer esto, ejecute el siguiente comando en la terminal:

sudo nano /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired

Y pegue el siguiente código en el 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

Luego guardar y salir.

Tenga en cuenta las siguientes condiciones en el script, como se documenta en la página del manual de NetworkManager :

Cada script debe ser:

  • un archivo normal
  • propiedad de root,
  • no se puede escribir por grupo u otro,
  • no set-uid,
  • y ejecutable por el propietario.

En lugar de nmcli radio wifi off(o nmcli nm wifi offpara versiones anteriores de NetworkManager), también existe rfkill block wifi. Sin embargo, si rfkillse usa en lugar de nmcli, las versiones más nuevas de NetworkManager volverán a encender el wifi durante el arranque.

Richard Hansen
fuente
¿Cómo puede la secuencia de comandos decir qué configuración desea? ¿Por qué no hacerlo rfkill unblock wifidespués de que te hayas conectado eth0y quieras compartir, rfkill block wificuando hayas terminado?
waltinator
@waltinator: cuando surge una conexión, NetworkManager establece una variable de entorno llamada CONNECTION_UUIDal identificador para esa conexión. Estaba pensando que el script podría hacer algo como solo deshabilitar WiFi para la conexión que he declarado la conexión por cable "estándar" pero dejarla habilitada si eth0se activa mediante una conexión diferente. No lo he probado, así que no sé si funciona. Pero su punto sobre simplemente controlarlo manualmente es bueno.
Richard Hansen
1
Úselo eth0|usb0)también para deshabilitar / habilitar WiFi cuando la conexión USB esté activada / desactivada.
krlmlr
1
¡Más útil! En lugar de usar rfkill, usé los comandos nmcli nm wifi offy nmcli nm wifi on. Pero no tengo ninguna razón particular para creer que los comandos nmcli son mejores. Solo quería hacer todo a la manera de NetworkManager.
Jesse Hallett el
3
La instrucción switch debería leer "eth * | usb * | en *)", porque comenzando con udev197 se han introducido los "Nombres de interfaz de red predecibles" [1]. Las tarjetas de red se denominan así eno1 / ens1 y similares y no coinciden con los antiguos nombres eth * y usb *. [1] freedesktop.org/wiki/Software/systemd/…
doublehelix el