Можно ли настроить ярлык для включения / выключения Wi-Fi?

Ответы:

14

Этот скрипт переключит статус и покажет сообщение для подтверждения того, что было сделано.

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

Чтобы приглашения zenity исчезли, измените их следующим образом:

zenity --info --text "Enabled wireless" --timeout="5"
zenity --info --text "Disabled wireless" --timeout="5"

Или сделайте уведомления, которые появляются в углу вашего экрана. альтернативный текст

sudo apt-get install libnotify-bin

Заменить линии zenity на

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."
misterben
источник
хороший там с rfkill ;-)
Павлос Г.
хорошо, есть ли способ автоматического исчезновения сообщения zenity через одну или две секунды?
РЭШ
Да, обновленный ответ. Есть недокументированный --timeout="n"вариант для zenity.
Мистербен
Можете ли вы подробно описать, что делает скрипт? Меня интересует, можно ли отключить вайфай только при подключенном ethernet ?
JJD
@misterben Считает ли сценарий состояние подключения Ethernet?
JJD
4

Некоторое время я искал решение для себя и использовал множество советов и хитростей для всех. Я наконец нашел решение, которое работает для меня, и решил создать новичок. Имейте в виду, это также для тех, кто менее способен программировать в Linux, чем многие из вас, как я;

Нажмите на значок запуска на верхней левой выдвижной панели (Dash Home), введите «gedit» и нажмите ввод.

Теперь вы собираетесь создать скрипт, который будет переключать Wi-Fi;

Я использовал ярлык сетевого менеджера; nmcli nm wifi, чтобы определить состояние wifi, а также управлять им. Я использовал скрипт уведомлений, приведенный в примере выше, для отображения состояния Wi-Fi. Вот мой сценарий;

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

Скопируйте и вставьте это в редактор, который вы только что открыли, и сохраните его как любое имя файла, которое вы считаете подходящим (мое было wifitoggle).

Следующим шагом было сделать файл исполняемым (в Домашней папке; щелкните правой кнопкой мыши по файлу, свойствам, вкладке разрешений, отметьте «Запускать как исполняемый файл»).

Затем поместите копию в каталог файловой системы / usr / bin (откройте терминал, введите sudo nautilus. Перейдите к Файловой системе, затем usr, затем откройте bin. Вставьте y).

Наконец, перейдите в Настройки системы -> Клавиатура -> вкладка Ярлыки; нажмите маленькую кнопку + внизу, введите имя для вашего переключателя и введите имя файла для сценария, который вы дали (в моем случае wifitoggle). Нажмите «Применить», нажмите «набранный» текст справа от него и нажмите горячие клавиши. СДЕЛАНО!

Johno
источник
3

Чтобы отключить использование вашего Wi-Fi-адаптера rfkill block wifi, включите егоrfkill unblock wifi

Вместо Wi-Fi вы можете использовать одно из следующих ключевых слов: all wifi wlan bluetooth uwb ultrawideband wimax wwan gps fm

Дэвид
источник
1

Да, вы можете с помощью cnetworkmanager . Он находится в репозитории, поэтому установите его и создайте панель запуска с командой, cnetworkmanager --wifi=noесли вы хотите отключить беспроводную связь, и команду, cnetworkmanager --wifi=yesесли вы хотите включить беспроводную связь.

Shakipu
источник
1

Что-то вроде: sudo ifconfig <wlan0> downили sudo ifconfig <wlan0> up?

Вот мой сценарий:

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

К вашему сведению: rfkill, как предлагали Дэвид и Мистербен, лучше, если вы используете Network-Manager .
ifconfig отключит интерфейс, но Network-Manager включит его автоматически.

Павлос Г.
источник
Идея использовать его с тем же ярлыком?
РЭШ
я проверю это и дам вам знать ;-)
Павлос Г.
0

Другой способ, которым я пользуюсь, - это удаление модуля ядра wl.

Off:

Rmmod WL

На:

Modprobe WL

Пит Эшдаун
источник