|
@@ -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'.
|