Odpowiedzi:
Ten skrypt przełącza status i wyświetla komunikat potwierdzający, co zostało zrobione.
#!/bin/bash
if [ $(rfkill list wifi | grep "Soft blocked: yes" | wc -l) -gt 0 ] ; then
rfkill unblock wifi
zenity --info --text "Enabled wireless"
else
rfkill block wifi
zenity --info --text "Disabled wireless"
fi
Aby zniknęły monity zenity, zmień je w następujący sposób:
zenity --info --text "Enabled wireless" --timeout="5"
zenity --info --text "Disabled wireless" --timeout="5"
Lub rób powiadomienia, które pojawiają się w rogu ekranu.
sudo apt-get install libnotify-bin
Zamień linie zenity na
notify-send -i network-wireless-full "Wireless enabled" "Your wireless adaptor has been enabled."
notify-send -i network-wireless-disconnected "Wireless disabled" "Your wireless adaptor has been disabled."
--timeout="n"
opcja zenity.
Od jakiegoś czasu szukałem rozwiązania tego problemu i skorzystałem z wielu porad i wskazówek. W końcu znalazłem rozwiązanie, które działa dla mnie, i postanowiłem stworzyć przewodnik dla początkujących. Bądźcie ze mną, jest to również dla tych, którzy są mniej zdolni do programowania w systemie Linux niż wielu z was, takich jak ja;
Kliknij ikonę programu uruchamiającego w lewym górnym wysuwanym pasku (Dash Home), wpisz „gedit” i kliknij Enter.
Teraz stworzysz skrypt, który będzie przełączał Wi-Fi;
Użyłem skrótu menedżera sieci; nmcli nm wifi, aby określić stan wifi, a także kontrolować go. Użyłem skryptu powiadomień podanego w powyższym przykładzie, aby wyświetlić stan Wi-Fi. Oto mój skrypt;
#!/bin/bash
if [ $(nmcli nm wifi | grep "disabled" | wc -l) -eq 1 ] ; then
nmcli nm wifi on
notify-send -i network-wireless-full "Wireless enabled" "Your wireless adaptor has been enabled."
else
nmcli nm wifi off
notify-send -i network-wireless-disconnected "Wireless disabled" "Your wireless adaptor has been disabled."
fi
Skopiuj i wklej to do edytora, który właśnie otworzyłeś, i zapisz jako dowolną nazwę pliku, którą uważasz za właściwą (moja była wifitoggle).
Kolejnym krokiem było uczynienie pliku wykonywalnym (w folderze domowym; kliknij prawym przyciskiem myszy plik, właściwości, kartę uprawnień, zaznacz opcję „Uruchom jako plik wykonywalny”).
Następnie umieść kopię w katalogu system plików / usr / bin (otwórz terminal, wpisz sudo nautilus. Przejdź do systemu plików, następnie usr, a następnie otwórz bin. Wklej y).
Na koniec przejdź do Ustawienia systemu -> Klawiatura -> karta Skróty; naciśnij mały przycisk + pod spodem, wpisz nazwę swojego przełącznika i wpisz nazwę pliku dla skryptu, który podałeś (w moim przypadku wifitoggle). Kliknij przycisk Zastosuj, a następnie kliknij tekst „diabled” po prawej stronie, a następnie naciśnij klawisze skrótu. GOTOWY!
Tak, możesz dzięki cnetworkmanager . Jest w repozytorium, więc zainstaluj go i utwórz program uruchamiający z poleceniem, cnetworkmanager --wifi=no
jeśli chcesz wyłączyć połączenie bezprzewodowe, i poleceniem, cnetworkmanager --wifi=yes
jeśli chcesz włączyć połączenie bezprzewodowe.
Coś w stylu: sudo ifconfig <wlan0> down
lub sudo ifconfig <wlan0> up
?
Oto mój skrypt:
#!/bin/bash
echo "Checking wireless iface status...."
if iwconfig wlan0 | grep Quality
then
echo "Wi/Fi is being disabled...."
if rfkill block wifi
then
echo "Wi/Fi is now OFF!"
fi
else
echo "Wi/Fi is being enabled...."
if rfkill unblock wifi
then
echo "Wi/Fi is now ON!"
fi
fi
FYI: rfkill, jak sugerowali David i Misterben , jest lepszy, jeśli używasz Network-Managera .
ifconfig wyłączy interfejs, ale Network-Manager ponownie go włączy automatycznie.
Innym szybkim rozwiązaniem, którego używam, jest usunięcie modułu jądra wl.
Poza:
rmmod wl
Na:
modprobe wl