Désactiver automatiquement le wifi (sans fil) lorsqu'il est câblé?

26

Quelle est la meilleure façon de désactiver automatiquement ma connexion Wifi / sans fil chaque fois que je branche un câble Ethernet filaire? J'aimerais qu'il soit réactivé lorsque je débranche le fil plus tard.

De plus, j'aime parfois partager la connexion filaire avec d'autres utilisateurs sans fil (ou vice-versa). Ce serait bien si je pouvais en quelque sorte exempter ces configurations.

J'utilise 11.10 Oneiric, qui utilise NetworkManager.

Richard Hansen
la source

Réponses:

31

Le script suivant, installé /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired, fonctionne principalement - il désactive la connexion sans fil même lorsque je souhaite partager avec ou sans fil.

Pour ce faire, exécutez la commande suivante dans le terminal:

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

Et collez le code suivant dans l'éditeur de texte.

#!/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

Ensuite, enregistrez et quittez.

Notez les conditions suivantes sur le script, comme indiqué dans la page de manuel NetworkManager :

Chaque script doit être:

  • un fichier régulier,
  • appartenant à root,
  • non accessible en écriture par groupe ou autre,
  • pas set-uid,
  • et exécutable par le propriétaire.

Au lieu de nmcli radio wifi off(ou nmcli nm wifi offpour les anciennes versions de NetworkManager), il y en a aussi rfkill block wifi. Cependant, si rfkillest utilisé à la place de nmcli, les versions plus récentes de NetworkManager réactiveront le wifi lors du démarrage.

Richard Hansen
la source
Comment le script peut-il indiquer la configuration souhaitée? Pourquoi ne le faites- rfkill unblock wifivous qu'après vous être connecté eth0et que vous souhaitez partager, puis rfkill block wifiquand vous avez terminé?
waltinator
@waltinator: Lorsqu'une connexion est établie, NetworkManager définit une variable d'environnement nommée CONNECTION_UUIDà l'identifiant de cette connexion. Je pensais que le script pourrait faire quelque chose comme désactiver uniquement le WiFi pour la connexion que j'ai déclarée la connexion filaire "standard" mais le laisser activé s'il eth0est activé par une connexion différente. Je ne l'ai pas essayé donc je ne sais pas si ça marche. Mais votre point sur le simple contrôle manuel est bon.
Richard Hansen
1
Utilisez eth0|usb0)également pour désactiver / activer le WiFi lorsque le partage de connexion USB est activé / désactivé.
krlmlr
1
Le plus utile! Au lieu d'utiliser rfkill, j'ai utilisé les commandes nmcli nm wifi offet nmcli nm wifi on. Mais je n'ai aucune raison particulière de croire que les commandes nmcli sont meilleures. Je voulais juste tout faire à la manière de NetworkManager.
Jesse Hallett
3
L'instruction switch doit se lire "eth * | usb * | en *)", car à partir de udev197, les "noms d'interface réseau prévisibles" [1] ont été introduits. Les cartes réseau sont donc nommées eno1 / ens1 et similaires et ne correspondent pas aux anciens noms eth * et usb *. [1] freedesktop.org/wiki/Software/systemd/…
doublehelix