Watch
1
0
Fork
You've already forked netui
0
forked from xff/netui
Network Manager TUI
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-31 10:21:01 +03:00
netui.py initial commit 2026-07-31 09:43:32 +03:00
README.MD Добавлен README.MD 2026-07-31 10:21:01 +03:00

netui

Curses-интерфейс к NetworkManager на базе nmcli. Вкладки: Wi-Fi, Ethernet, VPN, Mobile/DSL, Adapters, Profiles. Раскладка в две панели: список элементов слева, параметры выбранного элемента справа.

Функциональные отличия от nmtui: выбор типа безопасности Wi-Fi при подключении, включая 802.1x Enterprise; создание VPN-профилей типов PPTP, L2TP/IPsec, импорт OpenVPN, импорт WireGuard, OpenConnect, vpnc, SSTP, Fortinet SSL VPN; создание профилей GSM/CDMA/PPPoE; экран дополнительных параметров подключения (MTU, клонированный MAC, статические маршруты, DNS search domains, флаг metered, приоритет автоподключения, firewall zone); отдельная вкладка с обзором устройств независимо от наличия у них профиля.

Требования

  • Python 3.8+, только стандартная библиотека (curses)
  • nmcli в PATH, служба NetworkManager запущена
  • mmcli (ModemManager), опционально — используется для отображения оператора и уровня сигнала на вкладках Mobile/DSL и Adapters, если установлен
  • VPN-плагин NetworkManager, соответствующий используемому типу VPN. Установленные плагины определяются при запуске; типы без плагина помечаются «(not installed)» в списке выбора

Запуск

chmod +x netui.py
./netui.py

Отдельной установки не требует. Повышение прав, если требуется, выполняет сам nmcli/NetworkManager через polkit — так же, как при прямом вызове nmcli.

Вкладки

Вкладка Содержимое Действия
Wi-Fi Результаты сканирования Wi-Fi-устройства подключить, отключить, забыть, добавить скрытую сеть, пересканировать, радио вкл/выкл
Ethernet Проводные интерфейсы подключить, отключить, добавить профиль
VPN Сохранённые VPN-подключения включить/выключить, добавить, изменить, удалить
Mobile/DSL Модемы и сохранённые профили GSM/CDMA/PPPoE подключить, отключить, добавить профиль, радио WWAN вкл/выкл
Adapters Все устройства из nmcli device status, с профилем или без подключить, отключить, просмотр драйвера/MAC/MTU
Profiles Все сохранённые подключения любого типа активировать, отключить, изменить, удалить, переключить автозапуск

Безопасность Wi-Fi

При подключении к защищённой сети запрашивается тип безопасности:

Вариант Поведение
Auto-detect Только пароль; подключение через nmcli device wifi connect, тип безопасности определяет сам nmcli
WPA/WPA2 Personal Пароль; профиль создаётся с wifi-sec.key-mgmt wpa-psk
WPA3 Personal (SAE) Пароль; профиль создаётся с wifi-sec.key-mgmt sae
WEP Ключ; профиль создаётся с wifi-sec.key-mgmt none, wifi-sec.wep-key-type 1
WPA/WPA2 Enterprise (802.1x) EAP-метод, identity, пароль, опционально anonymous identity, phase-2 auth, путь к CA-сертификату; профиль создаётся с wifi-sec.key-mgmt wpa-eap и соответствующими 802-1x.*

nmcli device wifi connect не поддерживает 802.1x; вариант Enterprise собирается напрямую через nmcli connection add. Тип, определённый по результатам скана, помечается в списке как «detected»; можно выбрать любой другой. Тот же выбор используется при добавлении скрытой сети.

Типы VPN

Тип Поля Способ создания
PPTP шлюз, логин, пароль, NT-домен, переключатель MPPE connection add type vpn vpn-type pptp
L2TP / IPsec шлюз, логин, пароль, общий ключ (PSK) connection add type vpn vpn-type l2tp
OpenVPN путь к .ovpn/.conf connection import type openvpn
WireGuard путь к .conf connection import type wireguard (плагин не требуется)
OpenConnect шлюз, протокол (anyconnect/gp/pulse/nc/fortinet), логин connection add type vpn vpn-type openconnect; пароль запрашивается при подключении
Cisco (vpnc) шлюз, имя группы, пароль группы, логин/пароль Xauth connection add type vpn vpn-type vpnc
SSTP шлюз, логин, пароль connection add type vpn vpn-type sstp
Fortinet SSL VPN шлюз, логин, пароль connection add type vpn vpn-type fortisslvpn

Advanced-настройки

Клавиша A на сохранённом профиле, либо на устройстве во вкладках Ethernet/Adapters (тогда находится профиль, привязанный к этому устройству). Задаёт следующие свойства через nmcli connection modify:

Поле Свойство
MTU (только Ethernet/Wi-Fi) ethernet.mtu / wifi.mtu
Клонированный MAC (только Ethernet/Wi-Fi) ethernet.cloned-mac-address / wifi.cloned-mac-address
Статические маршруты ipv4.routes
DNS search domains ipv4.dns-search
Игнорировать DNS от DHCP/VPN ipv4.ignore-auto-dns
Не использовать как маршрут по умолчанию ipv4.never-default
Требовать IPv4 для статуса «поднято» ipv4.may-fail (инвертировано)
Metered-соединение connection.metered
Приоритет автоподключения connection.autoconnect-priority
Firewall zone connection.zone

Клавиши

Left/Right, h/l, Tab   переключение вкладок
1..6                   переход на вкладку по номеру
Up/Down, j/k           перемещение по списку
g / G                  в начало / в конец
PgUp / PgDn            страница вверх / вниз

Enter                  подключить (VPN: вкл/выкл)
d                      отключить
a                      добавить подключение
e                      изменить профиль
A                      advanced-настройки
x                      удалить профиль (для Wi-Fi — забыть сеть)
t                      переключить автозапуск
i                      показать все параметры

w                      радио Wi-Fi вкл/выкл
W                      радио мобильной связи (WWAN) вкл/выкл
s                      пересканировать Wi-Fi
r                      обновить
L                      журнал событий
?                      справка
q                      выход

Ограничения

  • Аналоговый дозвон через AT-модем не поддерживается: у NetworkManager нет соответствующего типа подключения.
  • Пароли, передаваемые в nmcli в момент создания подключения, на многопользовательской системе на короткое время видны в списке процессов (ps) — так же, как и при прямом вызове nmcli.
  • Все вызовы nmcli выполняются в фоновом потоке; интерфейс не блокируется во время сканирования или попытки подключения.
  • Минимальный размер терминала — 54×12 (столбцы×строки); при меньшем размере вместо интерфейса выводится запрос на увеличение окна.