Вопрос или проблема
Страница меню:
Подменю Сеть/IP/DNS:
Меню IP/DNS:
Меню на скриншотах, похоже, были созданы с помощью libncurses-dev, который можно установить с помощью sudo apt install libncurses-dev во всех поддерживаемых версиях Ubuntu, но программирование меню с использованием libncurses-dev не поддерживает bash, а поддерживает C или C++. Это слишком сложно для меня. Я бы предпочел использовать утилиту для создания интерактивных текстовых меню в Bash под названием “dialog”.
dialog отображает удобные диалоговые окна из shell-скриптов. Это приложение предоставляет метод отображения нескольких различных типов диалоговых окон из shell-скриптов. Чтобы установить dialog во всех поддерживаемых версиях Ubuntu, выполните следующую команду.
sudo apt install dialog
Пример shell-скрипта меню.sh с использованием dialog:
#!/bin/bash
while true; do
CHOICE=$(dialog --menu "Выберите опцию:" 15 50 4 \
1 "Опция 1" \
2 "Опция 2" \
3 "Опция 3" \
4 #!/bin/bash
# Очистить диалоговое окно
clear
case $CHOICE in
1)
echo "Вы выбрали Опцию 1"
;;
2)
echo "Вы выбрали Опцию 2"
;;
3)
echo "Вы выбрали Опцию 3"
;;
4)
echo "Выход..."
break
;;
*)
echo "Невалидная опция. Пожалуйста, попробуйте снова."
;;
esac
# Ожидание нажатия Enter перед повторным отображением меню
read -p "Нажмите Enter, чтобы продолжить..."
done
Щелкните правой кнопкой мыши на файле menu.sh и выберите Свойства -> вкладка Разрешения, затем установите флажок Разрешить этому файлу выполняться как программе.
Запуск menu.sh с помощью команды ./menu.sh
показывает меню в терминале, в котором находятся четыре различных пункта.
Вы можете выбрать опцию, щелкнув по ней мышью, после чего будет выведено сообщение или программа завершится в зависимости от выбранного пункта меню.
Ответ или решение
Создание подменю "Сеть/IP/DNS" в Bash-скриптах требует основательного подхода к разработке интерактивных текстовых меню в терминале. Использование библиотеки ncurses
для этого процесса действительно может показаться излишне сложным, особенно если вы не планируете писать код на C или C++. Альтернативой является утилита dialog
, которая позволяет создавать диалоговые окна в скриптах Bash, предлагая несколько видов интерактивных элементов.
Теоретическая основа
Утилита dialog
предоставляет простой способ отображения графических интерфейсов в текстовом режиме, что делает ваш скрипт более дружественным к пользователю. dialog
поддерживает различные типы диалоговых окон, такие как меню, сообщения, прогресс-бары и другие элементы управления. Это позволяет пользователю взаимодействовать с системой непосредственно через интерфейс командной строки без необходимости запуска сложных графических приложений.
dialog
отлично подходит для задач конфигурирования, когда нужно настроить параметры сети, такие как IP-адрес или настройки DNS. Установка утилиты выполняется легко и требует выполнения одной команды:
sudo apt install dialog
Пример
Давайте создадим простой скрипт на Bash network_menu.sh
, который будет представлять собой подменю для настройки сетевых параметров. Скрипт создаст интерактивное меню с использованием dialog
, где пользователь сможет выбрать и настроить различные параметры, такие как настройки IP и DNS.
#!/bin/bash
# Основной цикл меню
while true; do
# Настройка параметров меню
OPTION=$(dialog --clear --title "Сеть/IP/DNS Настройки" \
--menu "Выберите действие:" 15 50 5 \
1 "Настроить IP адрес" \
2 "Настроить DNS серверы" \
3 "Посмотреть текущие настройки сети" \
4 "Выход" 3>&1 1>&2 2>&3)
# Очистка и закрытие предыдущих окон dialog
clear
# Обработка выбора пользователя
case $OPTION in
1)
echo "Выбрана настройка IP адреса"
# Здесь можно добавить дополнительные команды для настройки IP
;;
2)
echo "Выбрана настройка DNS серверов"
# Здесь можно добавить команды для настройки DNS
;;
3)
echo "Текущие настройки сети:"
ifconfig
# Дополнительные команды для отображения информации
;;
4)
echo "Выход..."
break
;;
*)
echo "Неверный выбор, попробуйте еще раз."
;;
esac
# Ожидание нажатия клавиши Enter для продолжения
read -p "Нажмите Enter для продолжения..."
done
Применение
Этот скрипт позволит вам с легкостью управлять основными сетевыми параметрами прямо из терминала. Прежде чем запускать скрипт, необходимо установить нужные права доступа, сделав его исполняемым:
chmod +x network_menu.sh
Запустите скрипт командой ./network_menu.sh
, после чего в терминале отобразится меню с четырьмя опциями. Вы можете выбрать одну из них, чтобы настроить IP, DNS или просто просмотреть текущие сетевые параметры. В случае выбора "Выход", скрипт завершит свою работу.
Заключение
Использование dialog
в Bash-скриптах представляет собой мощный инструмент для создания удобных и функциональных интерфейсов взаимодействия с пользователем. Это способ сделать конфигурацию и управление системой более доступным и понятным, простаивая в текстовом режиме.
При разработке скриптов важно предусмотреть и обработать все возможные сценарии использования, добавляя логические блоки и валидацию ввода пользователя. В идеале, скрипт должен покрывать как можно больше возможных конфигураций и предоставлять пользователю максимально актуальную информацию о состоянии системы.