Serj Kalichev 1 year ago
parent
commit
c085e228b6
1 changed files with 52 additions and 2 deletions
  1. 52 2
      docs/klish3.ru.md

+ 52 - 2
docs/klish3.ru.md

@@ -1,4 +1,4 @@
-# Klish версии 3
+# Klish версия 3
 
 
 ## Обзор
 ## Обзор
 
 
@@ -41,4 +41,54 @@
 Klish в первую очередь расчитан на подход Cisco, т.е. на немедленно выполняемые
 Klish в первую очередь расчитан на подход Cisco, т.е. на немедленно выполняемые
 команды. Однако проект имеет систему плугинов, что позволяет расширять его
 команды. Однако проект имеет систему плугинов, что позволяет расширять его
 возможности. Так плугин klish-plugin-sysrepo, реализованный отдельным проектом,
 возможности. Так плугин klish-plugin-sysrepo, реализованный отдельным проектом,
-работая на основе хранилища sysrepo, позволяет организовать Juniper подход.
+работая на основе хранилища sysrepo, позволяет организовать Juniper подход.
+
+
+## Основные сведения
+
+Основа проекта klish - библиотека libklish. На ее основе построены клиент klish
+и сервер klishd. Основную работу выполняет сервер klishd. Он загружает
+конфигурацию команд и ожидает запросов от клиентов. Взаимодействие между
+клиентами и сервером происходит по UNIX-сокетам с использованием специально
+разработанного для этой цели протокола KTP (Klish Transfer Protocol). Задача
+клиента - передача ввода от оператора на сервер и получение от него
+результата для показа оператору. Клиент не знает, какие команды существуют,
+как их выполнять. Все это делает серверная сторона. Так как клиент имеет
+относительно простой код, не трудно реализовать альтернативные программы -
+клиенты, например графический клиент или клиент для автоматизированного
+управления. Сейчас написан только текстовый клиент klish. Когда клиент
+соединяется с сервером, порождается отдельный процесс для обслуживания
+конкретного клиента. При завершении сессии, процесс также завершается. Таким
+образом типичное применение klish - это заранее запущенный в системе сервер
+klishd и клиенты, подключающиеся к нему по мере надобности.
+
+Klish имеет два типа плугинов. Плугины для загрузки конфигурации команд
+(директория dbs/ в дереве исходных кодов) и плугины, реализующие действия для
+команд (директория plugins/ в дереве исходных кодов).
+
+Для настройки параметров сервера используется конфигурационный файл
+'/etc/klish/klishd.conf'. Альтернативный конфигурационный файл можно указать при
+запуске сервера klishd.
+
+Для настройки параметров клиента используется конфигурационный файл
+'/etc/klish/klish.conf'. Альтернативный конфигурационный файл можно указать при
+запуске клиента klish.
+
+
+## Загрузка конфигурации команд
+
+В составе klish существуют следующие плугины dbs (DataBases) для загрузки
+конфигурации команд (схемы):
+
+* expat - Использует библиотеку expat для загрузки конфигурации из XML.
+* libxml2 - Использует библиотеку libxml2 для загрузки конфигурации из XML.
+* roxml - Использует библиотеку roxml для загрузки конфигурации из XML.
+* ischeme - Использует встроенную в C-код конфигурацию (Internal Scheme).
+
+Существует внутреннее представление схемы, совпадающее с ischeme.
+Остальные плугины переводят внешние представление в ischeme, а klish
+обрабатывает ischeme внутренними механизмами.
+
+Установленные плугины dbs находятся в '/usr/lib/klish/dbs' (если конфигурировать
+сборку с --prefix=/usr). Их имена 'kdb-<имя>.so', например
+'/usr/lib/klish/dbs/kdb-libxml2.so'.