Poniższy skrypt, w /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired
większości, działa - wyłącza sieć bezprzewodową, nawet jeśli chcę udostępnić połączenie przewodowe z siecią bezprzewodową lub odwrotnie.
Aby to zrobić, uruchom następującą komendę w terminalu:
sudo nano /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired
I wklej następujący kod do edytora tekstu.
#!/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
Następnie zapisz i wyjdź.
Zwróć uwagę na następujące warunki skryptu, jak udokumentowano na stronie podręcznika NetworkManager :
Każdy skrypt powinien być:
- zwykły plik,
- własnością root,
- niemożliwy do zapisu przez grupę lub inne osoby,
- nie ustawiono UID,
- i wykonywalny przez właściciela.
Zamiast nmcli radio wifi off
(lub nmcli nm wifi off
dla starszych wersji NetworkManager) istnieje również rfkill block wifi
. Jeśli jednak rfkill
zostanie użyte zamiast nmcli
, nowsze wersje NetworkManager ponownie włączy Wi-Fi podczas uruchamiania.
rfkill unblock wifi
Po co to robić po połączeniueth0
i chcesz się dzielić, arfkill block wifi
kiedy skończysz?CONNECTION_UUID
identyfikatora tego połączenia. Myślałem, że skrypt może zrobić coś takiego jak wyłączenie Wi-Fi tylko dla połączenia, które zadeklarowałem jako „standardowe” połączenie przewodowe, ale pozostaw to włączone, jeślieth0
zostanie aktywowane przez inne połączenie. Nie próbowałem tego, więc nie wiem, czy to działa. Ale twój cel polegający na ręcznym sterowaniu nim jest dobry.eth0|usb0)
również do wyłączania / włączania Wi-Fi, gdy tethering przez USB jest włączony / wyłączony.nmcli nm wifi off
inmcli nm wifi on
. Ale nie mam żadnego szczególnego powodu, by sądzić, że polecenia nmcli są lepsze. Chciałem tylko zrobić wszystko w sposób NetworkManager.