Вопрос или проблема
Какую команду в терминале нужно ввести, чтобы включить/выключить режим ожидания в Ubuntu?
Просто sudo rfkill block all
и sudo rfkill unblock all
? Я знаю, что это отключит все беспроводные модули на компьютере, но заметит ли система это, чтобы переключить режим ожидания в сетевых настройках?
Запуск следующей команды в терминале:
gnome-control-center network
откроет окно управления сетью, которое должно быть похоже на:
Вы можете заметить, что в этот момент “Режим ожидания” выключен, а беспроводная сеть включена.
Теперь, не закрывая это окно, запустите следующую команду в терминале:
nmcli nm wifi off
Вышеупомянутое окно автоматически изменится на:
Как видите, теперь “Режим ожидания” включен, а беспроводная сеть выключена.
Запустив снова в терминале следующую команду:
nmcli nm wifi off
выключит “Режим ожидания” и снова включит беспроводную сеть.
Таким образом, вам не нужно использовать rfkill
(который также требует прав суперпользователя) для переключения “Режима ожидания” через терминал.
nmcli
(см. также man nmcli
) вполне достаточно и может выполняться любым обычным пользователем… Вам не нужны права суперпользователя, чтобы подняться в самолёт :)).
Для Ubuntu 18.04:
nmcli r wifi on
выключает режим ожидания выключен, а противоположная команда включает его включен.
Простой bash скрипт для переключения режима ожидания включен ниже; сохраните его в файл и установите бит выполнения в свойствах.
#!/bin/bash
wifi="$(nmcli r wifi | awk 'FNR = 2 {print $1}')"
if [ "$wifi" == "enabled" ]
then
nmcli r wifi off
else
nmcli r wifi on
fi
Объединив ответы из разных тем, я заставил это работать на Ubuntu 20.04
@Rudy и это: https://askubuntu.com/a/1144599/806813
#!/bin/bash
radio="$(nmcli radio all | awk 'FNR == 2 {print $2}')"
if [ "$radio" = "enabled" ]
then
nmcli radio all off
else
nmcli radio all on
fi
if rfkill list bluetooth | grep -q 'yes$' ; then
rfkill unblock bluetooth
else
rfkill block bluetooth
fi
Назначил Alt-A для себя, но это личный выбор.
Имейте в виду, что я уже отключил встроенный WiFi-адаптер на своем Lenovo T420, потому что использую USB WiFi-адаптер Asus, который включается и выключается вместе с Bluetooth.
Тестировалось на 20.04.1 LTS. Давайте отключим все радиопередачи:
rudy@nbu130-rudy:~/bin$ pwd
/home/rudy/bin
rudy@nbu130-rudy:~/bin$ ./airplane_toggle
rudy@nbu130-rudy:~/bin$ nmcli radio all
WIFI-HW WIFI WWAN-HW WWAN
enabled enabled enabled enabled
rudy@nbu130-rudy:~/bin$ ./airplane_toggle
rudy@nbu130-rudy:~/bin$ nmcli radio all
WIFI-HW WIFI WWAN-HW WWAN
enabled disabled enabled disabled
rudy@nbu130-rudy:~/bin$ cat airplane_toggle
#!/bin/bash
radio="$(nmcli radio all | awk 'FNR == 2 {print $2}')"
if [ "$radio" == "enabled" ]
then
nmcli radio all off
else
nmcli radio all on
fi
Даже можно назначить команду ‘/home/rudy/bin/airplane_toggle’ на сочетание клавиш (тестировалось).
На дистрибутивах на базе Debian и Arch, вдохновленный предыдущим кодом, это отключит WiFi и Bluetooth и отправит уведомление:
#!/bin/bash
wifi="$(nmcli r wifi | awk 'FNR = 2 {print $1}')"
if [ "$wifi" == "enabled" ]; then
rfkill block all &
notify-send 'Режим ожидания: активен'
else
rfkill unblock all &
notify-send 'Режим ожидания: неактивен'
fi
Конечно, перед тем как сделать всё это, вы должны убедиться, что маленький переключатель на левой стороне вашего ноутбука рядом с запястьем установлен в зеленый. Я это уже проделывал ☹️
Ответ или решение
Чтобы включить или выключить режим "Авиа" в Ubuntu через терминал, рекомендуется использовать утилиту nmcli
, которая является инструментом для управления сетевыми настройками через командную строку. Команда rfkill
также может быть использована для блокировки или разблокировки всех беспроводных интерфейсов, но в этом случае она не всегда корректно отражает состояние режима "Авиа" в графических интерфейсах, таких как настройки сети.
Для включения режима "Авиа" выполните следующую команду в терминале:
nmcli radio all off
Это отключит все беспроводные передачи, включая Wi-Fi и сотовую связь, и автоматически обновит состояние режима "Авиа" в настройках сети.
Чтобы отключить режим "Авиа" и снова включить все беспроводные интерфейсы, выполните:
nmcli radio all on
Если вы хотите создать сценарий для автоматизации этих действий, вот пример простого Bash-скрипта, который переключает режим "Авиа":
#!/bin/bash
radio="$(nmcli radio all | awk 'FNR == 2 {print $2}')"
if [ "$radio" == "enabled" ]; then
nmcli radio all off
notify-send 'Режим авиарежима: активирован'
else
nmcli radio all on
notify-send 'Режим авиарежима: деактивирован'
fi
Этот скрипт проверяет текущее состояние беспроводных интерфейсов и переключает режим "Авиа", отправляя уведомление о изменении состояния.
Установка и использование скрипта
- Скопируйте указанный выше код и вставьте его в текстовый файл, например
airplane_toggle.sh
. - Сделайте его исполняемым с помощью команды:
chmod +x airplane_toggle.sh
- Теперь вы можете запускать этот скрипт из терминала или назначить его на горячую клавишу для быстрого доступа.
Примечание
Не забудьте проверять физический переключатель на вашем ноутбуке, который может отключить Wi-Fi независимо от программных настроек. Это распространенная ошибка, когда пользователи не замечают, что аппаратный переключатель находится в выключенном состоянии.
Использование nmcli
предпочтительнее, так как это более современный и чистый подход по сравнению с использованием rfkill
, который требует повышенных привилегий. Кроме того, nmcli
позволяет более гибко управлять сетевыми подключениями и их состояниями.