Включение/выключение режима самолета через терминал

Вопрос или проблема

Какую команду в терминале нужно ввести, чтобы включить/выключить режим ожидания в 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

Этот скрипт проверяет текущее состояние беспроводных интерфейсов и переключает режим "Авиа", отправляя уведомление о изменении состояния.

Установка и использование скрипта

  1. Скопируйте указанный выше код и вставьте его в текстовый файл, например airplane_toggle.sh.
  2. Сделайте его исполняемым с помощью команды:
    chmod +x airplane_toggle.sh
  3. Теперь вы можете запускать этот скрипт из терминала или назначить его на горячую клавишу для быстрого доступа.

Примечание

Не забудьте проверять физический переключатель на вашем ноутбуке, который может отключить Wi-Fi независимо от программных настроек. Это распространенная ошибка, когда пользователи не замечают, что аппаратный переключатель находится в выключенном состоянии.

Использование nmcli предпочтительнее, так как это более современный и чистый подход по сравнению с использованием rfkill, который требует повышенных привилегий. Кроме того, nmcli позволяет более гибко управлять сетевыми подключениями и их состояниями.

Оцените материал
Добавить комментарий

Капча загружается...