Disattiva automaticamente il wifi (wireless) quando cablato?


26

Qual è il modo migliore per disabilitare automaticamente la mia connessione WiFi / wireless ogni volta che collego un cavo Ethernet cablato? Vorrei che fosse riattivato quando in seguito scollego il cavo.

Inoltre, a volte mi piace condividere la connessione cablata con altri utenti wireless (o viceversa). Sarebbe bello se potessi in qualche modo esentare queste configurazioni.

Sto usando 11.10 Oneiric, che utilizza NetworkManager.

Risposte:


31

Il seguente script, inserito /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired, funziona principalmente: disabilita il wireless anche quando voglio condividere cablato con il wireless o viceversa.

Per fare ciò, eseguire il seguente comando nel terminale:

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

E incolla il seguente codice nell'editor di testo.

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

Quindi salva ed esci.

Notare le seguenti condizioni sullo script, come documentato nella pagina del manuale di NetworkManager :

Ogni script dovrebbe essere:

  • un file normale,
  • di proprietà di root,
  • non scrivibile per gruppo o altro,
  • non impostato,
  • ed eseguibile dal proprietario.

Invece di nmcli radio wifi off(o nmcli nm wifi offper le versioni precedenti di NetworkManager), c'è anche rfkill block wifi. Tuttavia, se rfkillviene utilizzato al posto di nmcli, le versioni più recenti di NetworkManager riattiveranno il wifi durante l'avvio.


In che modo lo script può dire quale configurazione desideri? Perché noy lo fa solo rfkill unblock wifidopo che ti sei connesso eth0e vuoi condividere, poi rfkill block wifiquando hai finito?
Waltinator,

@waltinator: quando si verifica una connessione, NetworkManager imposta una variabile di ambiente denominata CONNECTION_UUIDall'identificatore per quella connessione. Pensavo che lo script potesse fare qualcosa come disabilitare il WiFi solo per la connessione che ho dichiarato la connessione cablata "standard" ma lasciarla abilitata se eth0attivata da una connessione diversa. Non l'ho provato, quindi non so se funziona. Ma il tuo punto sul solo controllo manuale è buono.
Richard Hansen,

1
Utilizzare eth0|usb0)per disabilitare / abilitare il WiFi anche quando il tethering USB è attivato / disattivato.
krlmlr

1
Il più utile! Invece di usare rfkill, ho usato i comandi nmcli nm wifi offe nmcli nm wifi on. Ma non ho alcun motivo particolare per credere che i comandi nmcli siano migliori. Volevo solo fare tutto nel modo NetworkManager.
Jesse Hallett,

3
L'istruzione switch dovrebbe leggere "eth * | usb * | en *)", poiché a partire da udev197 sono stati introdotti i "Nomi di interfaccia di rete prevedibili" [1]. Le schede di rete sono quindi denominate eno1 / ens1 e simili e non corrispondono ai vecchi nomi eth * e usb *. [1] freedesktop.org/wiki/Software/systemd/…
doublehelix,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.