Как создать подменю Network/IP/DNS в оболочке bash?

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

Страница меню:

Страница меню

Подменю Сеть/IP/DNS:

Подменю Сеть/IP/DNS

Меню 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 показывает меню в терминале, в котором находятся четыре различных пункта.

диалоговое меню с 4 пунктами

Вы можете выбрать опцию, щелкнув по ней мышью, после чего будет выведено сообщение или программа завершится в зависимости от выбранного пункта меню.

Ответ или решение

Создание подменю "Сеть/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-скриптах представляет собой мощный инструмент для создания удобных и функциональных интерфейсов взаимодействия с пользователем. Это способ сделать конфигурацию и управление системой более доступным и понятным, простаивая в текстовом режиме.

При разработке скриптов важно предусмотреть и обработать все возможные сценарии использования, добавляя логические блоки и валидацию ввода пользователя. В идеале, скрипт должен покрывать как можно больше возможных конфигураций и предоставлять пользователю максимально актуальную информацию о состоянии системы.

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

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