Klish

Бесплатно
Открытый исходный код
Windows
macOS
Linux

Сайт: src.libcode.org/klish

Klish — это фреймворк для создания командных интерфейсов в стиле сетевого оборудования Cisco, ориентированный на Unix-подобные системы, в первую очередь Linux. Проект реализован на языке программирования C и использует XML-файлы для описания структуры команд, контекстов и прав доступа. Klish обеспечивает модульную архитектуру, позволяющую разработчикам определять дерево команд, параметры и проверку ввода отдельно от бизнес-логики приложения.

Изначально фреймворк разрабатывался как средство унификации интерфейсов управления сетевыми устройствами и приложениями, требующими иерархичного CLI с режимами конфигурации и просмотра состояния. Klish предоставляет механизмы разбора командной строки, автодополнения, контекстной навигации и интерактивного взаимодействия с пользователем, а также поддержку сохранения и загрузки конфигурации. Документы конфигурации в формате XML позволяют описывать команды декларативно, что упрощает сопровождение и расширение интерфейса без глубокого вмешательства в исходный код сервиса.

  • Декларативное описание команд: команды, аргументы, опции и контексты задаются в XML-файлах.
  • Иерархия режимов: поддержка разных уровней CLI (привилегированный режим, режим конфигурации и т. п.).
  • Парсинг и валидация: встроенные механизмы разбора аргументов и проверки допустимости значений.
  • Автодополнение и подсказки: контекстное дополнение команд и параметров в интерактивной сессии.
  • Интеграция с приложением: интерфейсы для вызова пользовательского кода при исполнении команд.
  • Управление доступом: возможности разграничения прав пользователей для различных команд и режимов.
  • Логирование и история сессий: опции фиксации выполняемых команд и ведения истории.
  • Портируемость и расширяемость: ориентирован на Unix-платформы, легко встраивается в существующие сервисы на C.
  • Конфигурация и сохранение: средства экспорта/импорта настроек и возможности сериализации конфигурации.
  • Лёгкость поддержки: разделение описания интерфейса и реализации команд для упрощения сопровождения.
Подробнее