|
@@ -40,8 +40,8 @@
|
|
|
|
|
|
Какой из подходов лучше и проще в конкретном случае - определяется задачей.
|
|
|
Klish в первую очередь рассчитан на подход Cisco, т.е. на немедленно выполняемые
|
|
|
-команды. Однако проект имеет систему плугинов, что позволяет расширять его
|
|
|
-возможности. Так плугин klish-plugin-sysrepo, реализованный отдельным проектом,
|
|
|
+команды. Однако проект имеет систему плагинов, что позволяет расширять его
|
|
|
+возможности. Так плагин klish-plugin-sysrepo, реализованный отдельным проектом,
|
|
|
работая на основе хранилища sysrepo, позволяет организовать Juniper подход.
|
|
|
|
|
|
|
|
@@ -61,19 +61,50 @@ klishd продолжает ожидать новых соединений от
|
|
|
|
|
|
Задача клиента - передача ввода от оператора на сервер и получение от него
|
|
|
результата для показа оператору. Клиент не знает, какие команды существуют,
|
|
|
-как их выполнять. Все это делает серверная сторона. Так как клиент имеет
|
|
|
-относительно простой код, не трудно реализовать альтернативные программы -
|
|
|
+как их выполнять. Выполнением занимается серверная сторона. Так как клиент имеет
|
|
|
+относительно простой код, нетрудно реализовать альтернативные программы -
|
|
|
клиенты, например графический клиент или клиент для автоматизированного
|
|
|
-управления. Сейчас написан только текстовый клиент klish.
|
|
|
+управления. Сейчас существует только текстовый клиент командной строки klish.
|
|
|
|
|
|
-Основа проекта klish - библиотека libklish. На ее основе построены клиент klish
|
|
|
-и сервер klishd.
|
|
|
-
|
|
|
-Klish имеет два типа плугинов. Плугины для загрузки конфигурации команд
|
|
|
-(директория dbs/ в дереве исходных кодов) и плугины, реализующие действия для
|
|
|
-команд (директория plugins/ в дереве исходных кодов).
|
|
|
+
|
|
|
|
|
|
-Для настройки параметров сервера используется конфигурационный файл
|
|
|
+Основа проекта klish - библиотека libklish. На ее основе построены клиент klish
|
|
|
+и сервер klishd. Библиотека реализует все основные механизмы работы и
|
|
|
+взаимодействия. Библиотека входит в состав проекта klish.
|
|
|
+
|
|
|
+Текстовый клиент использует еще одну встроенную библиотеку -
|
|
|
+libtinyrl (Tiny ReadLine). Библиотека обеспечивает взаимодействие с пользователем
|
|
|
+при работе в командной строке.
|
|
|
+
|
|
|
+Все исполняемые файлы проекта klish, а также все его встроенные библиотеки
|
|
|
+используют в своей работе библиотеку libfaux (Library of Auxiliary Functions) -
|
|
|
+библиотеку вспомогательных функций. В предыдущих версиях проекта klish библиотека
|
|
|
+входила в состав исходных кодов klish, сейчас она выделена в отдельный проект и
|
|
|
+включает функции, облегчающие работу со строками, файлами, сетью, стандартными
|
|
|
+структурами данных и т.д. Библиотека libfaux является обязательной внешней
|
|
|
+зависимостью для проекта klish.
|
|
|
+
|
|
|
+Кроме этого, плагины klish, о которых будет сказано ниже, могут использовать и
|
|
|
+другие библиотеки для своей работы.
|
|
|
+
|
|
|
+Klish имеет два типа плагинов. Плагины для загрузки конфигурации команд
|
|
|
+(назовем их плагинами баз данных) и плагины, реализующие действия для
|
|
|
+команд от пользователя (назовем их плагинами функций). Klish не
|
|
|
+имеет встроенных команд и средств загрузки конфигурации (кроме специального
|
|
|
+случая ischeme). Вся эта функциональность реализована в плагинах. Несколько
|
|
|
+плагинов с базовой функциональностью входят в состав исходных кодов klish и
|
|
|
+находятся в директориях "dbs/" и "plugins/".
|
|
|
+
|
|
|
+Все необходимые плагины загружает слушающий сервер klishd в начале своей работы.
|
|
|
+Какие именно плагины для загрузки конфигурации пользовательских команд нужно
|
|
|
+использовать он узнает из своего базового файла конфигурации (специальный файл в
|
|
|
+формате INI). Затем с помощью плагина базы данных сервер klishd загружает
|
|
|
+конфигурацию пользовательских команд (например из XML файлов). Из этой
|
|
|
+конфигурации он узнает список необходимых плагинов функций, и так же загружает
|
|
|
+эти плагины в память. Однако использовать функции из плагинов функций будет
|
|
|
+только обслуживающий (не слушающий) сервер klishd по запросам от пользователя.
|
|
|
+
|
|
|
+Для настройки параметров сервера klishd используется конфигурационный файл
|
|
|
`/etc/klish/klishd.conf`. Альтернативный конфигурационный файл можно указать при
|
|
|
запуске сервера klishd.
|
|
|
|
|
@@ -84,7 +115,7 @@ Klish имеет два типа плугинов. Плугины для заг
|
|
|
|
|
|
## Загрузка конфигурации команд
|
|
|
|
|
|
-В составе klish существуют следующие плугины dbs (DataBases) для загрузки
|
|
|
+В составе klish существуют следующие плагины dbs (DataBases) для загрузки
|
|
|
конфигурации команд (схемы):
|
|
|
|
|
|
* expat - Использует библиотеку expat для загрузки конфигурации из XML.
|
|
@@ -93,40 +124,40 @@ Klish имеет два типа плугинов. Плугины для заг
|
|
|
* ischeme - Использует встроенную в C-код конфигурацию (Internal Scheme).
|
|
|
|
|
|
Существует внутреннее представление схемы, совпадающее с ischeme.
|
|
|
-Остальные плугины переводят внешние представление в ischeme, а klish
|
|
|
+Остальные плагины переводят внешние представление в ischeme, а klish
|
|
|
обрабатывает ischeme внутренними механизмами.
|
|
|
|
|
|
-Установленные плугины dbs находятся в `/usr/lib` (если конфигурировать
|
|
|
+Установленные плагины dbs находятся в `/usr/lib` (если конфигурировать
|
|
|
сборку с --prefix=/usr). Их имена `libklish-db-<имя>.so`, например
|
|
|
`/usr/lib/libklish-db-libxml2.so`.
|
|
|
|
|
|
|
|
|
-## Плугины исполняемых функций
|
|
|
+## Плагины исполняемых функций
|
|
|
|
|
|
Каждая команда klish выполняет какое-либо действие или несколько действий сразу.
|
|
|
Эти действия надо как-то описывать. Если смотреть внутрь реализации, то klish
|
|
|
-может запускать только исполняемый откомпилированный код из плугина. Плугины
|
|
|
+может запускать только исполняемый откомпилированный код из плагина. Плагины
|
|
|
содержат так называемые символы (symbol, sym), которые, по-сути, представляют
|
|
|
собой функции с единым зафиксированным API. На эти символы могут ссылаться
|
|
|
команды klish. В свою очередь символ может выполнять сложный код, например
|
|
|
запускать интерпретатор shell со скриптом, определяемым при описании команды
|
|
|
klish в конфигурационном файле. Или же другой символ может исполнять Lua скрипт.
|
|
|
|
|
|
-Klish умеет получать символы только из плугинов. Стандартные символы реализованы
|
|
|
-в плугинах включенных в состав проекта klish. В состав klish входят следующие
|
|
|
-плугины:
|
|
|
+Klish умеет получать символы только из плагинов. Стандартные символы реализованы
|
|
|
+в плагинах включенных в состав проекта klish. В состав klish входят следующие
|
|
|
+плагины:
|
|
|
|
|
|
-* klish - Базовый плугин. Навигация, типы данных (для параметров),
|
|
|
+* klish - Базовый плагин. Навигация, типы данных (для параметров),
|
|
|
вспомогательные функции.
|
|
|
-* lua - Исполнение скриптов Lua. Механизм встроен в плугин и не использует
|
|
|
+* lua - Исполнение скриптов Lua. Механизм встроен в плагин и не использует
|
|
|
внешнюю программу для интерпретации.
|
|
|
* script - Исполнение скриптов. Учитывает шебанг (shebang) для определения
|
|
|
какой интерпретатор использовать. Таким образом могут выполняться не только
|
|
|
shell скрипты, но и скрипты на других интерпретируемых языках. По умолчанию
|
|
|
используется интерпретатор shell.
|
|
|
|
|
|
-Пользователи могут писать свои плугины и использовать собственные символы в
|
|
|
-командах klish. Установленные плугины находятся в `/usr/lib`
|
|
|
+Пользователи могут писать свои плагины и использовать собственные символы в
|
|
|
+командах klish. Установленные плагины находятся в `/usr/lib`
|
|
|
(если конфигурировать сборку с --prefix=/usr). Их имена
|
|
|
`libklish-plugin-<имя>.so`, например `/usr/lib/libklish-plugin-script.so`.
|
|
|
|
|
@@ -218,7 +249,7 @@ VIEW. Можно определить VIEW со "стандартными" ко
|
|
|
Каждая команда должна определять действие, выполняемое при вводе этой команды
|
|
|
оператором. Действие может быть одно, либо несколько действий для одной команды.
|
|
|
Действие объявляется тегом `ACTION` внутри команды. В ACTION указывается ссылка
|
|
|
-на символ (функцию) из плугина функций, которая будет исполнена в данном случае.
|
|
|
+на символ (функцию) из плагина функций, которая будет исполнена в данном случае.
|
|
|
Все данные внутри тега ACTION доступны символу. Символ по своему усмотрению может
|
|
|
использовать эту информацию. В качестве данных, например, может быть задан
|
|
|
скрипт, который будет выполнен символом.
|
|
@@ -307,12 +338,12 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
оператору. Если ACTION вернули ошибку, то элемент будет скрыт.
|
|
|
|
|
|
|
|
|
-### Плугин
|
|
|
+### Плагин
|
|
|
|
|
|
-Процесс klishd загружает не все существующие плугины функций подряд, а только
|
|
|
+Процесс klishd загружает не все существующие плагины функций подряд, а только
|
|
|
те, которые указаны в конфигурации с помощью тега `PLUGIN`. Данные внутри тега
|
|
|
-могут интерпретироваться функцией инициализации плугина по своему усмотрению,
|
|
|
-в частности, как конфигурация для плугина.
|
|
|
+могут интерпретироваться функцией инициализации плагина по своему усмотрению,
|
|
|
+в частности, как конфигурация для плагина.
|
|
|
|
|
|
|
|
|
### Горячие клавиши
|
|
@@ -437,13 +468,13 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
|
|
|
### PLUGIN
|
|
|
|
|
|
-Самостоятельно klish не загружает никаких плугинов исполняемых функций.
|
|
|
+Самостоятельно klish не загружает никаких плагинов исполняемых функций.
|
|
|
Соответственно пользователю недоступны никакие символы для использования в
|
|
|
-действиях ACTION. Загрузку плугинов нужно в явном виде прописывать в файлах
|
|
|
+действиях ACTION. Загрузку плагинов нужно в явном виде прописывать в файлах
|
|
|
конфигурации. Для этого используется тег `PLUGIN`.
|
|
|
|
|
|
-Обратите внимание, что даже базовый плугин с именем "klish" также не загружается
|
|
|
-автоматически и его надо прописывать в файлах конфигурации. В этом плугине, в
|
|
|
+Обратите внимание, что даже базовый плагин с именем "klish" также не загружается
|
|
|
+автоматически и его надо прописывать в файлах конфигурации. В этом плагине, в
|
|
|
частности, реализована навигация. Типичная конфигурация будет содержать строку:
|
|
|
|
|
|
```
|
|
@@ -455,9 +486,9 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
|
|
|
#### Атрибут `name`
|
|
|
|
|
|
-Атрибут определяет имя, под которым плугин будет распознаваться внутри файлов
|
|
|
+Атрибут определяет имя, под которым плагин будет распознаваться внутри файлов
|
|
|
конфигурации. Когда `ACTION` ссылается на символ, то может быть указано просто
|
|
|
-имя символа, а может быть уточнено, в каком плугине искать символ.
|
|
|
+имя символа, а может быть уточнено, в каком плагине искать символ.
|
|
|
|
|
|
```
|
|
|
<ACTION sym="my_sym"\>
|
|
@@ -465,26 +496,26 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
<ACTION sym="my_sym@my_plugin"\>
|
|
|
```
|
|
|
|
|
|
-В первом случае klish будет искать "my_sym" во всех плугинах и использует первый
|
|
|
-найденный. Во втором случае поиск будет производиться только в плугине
|
|
|
-"my_plugin". Кроме того, разные плугины могут содержать одноименные символы и
|
|
|
-указание плугина позволит узнать, какой из символов имелся в виду.
|
|
|
+В первом случае klish будет искать "my_sym" во всех плагинах и использует первый
|
|
|
+найденный. Во втором случае поиск будет производиться только в плагине
|
|
|
+"my_plugin". Кроме того, разные плагины могут содержать одноименные символы и
|
|
|
+указание плагина позволит узнать, какой из символов имелся в виду.
|
|
|
|
|
|
Если не указаны атрибуты `id` и `file`, то `name` используется также для
|
|
|
-формирования имени файла плугина. Плугин должен иметь имя `kplugin-<name>.so` и
|
|
|
+формирования имени файла плагина. Плагин должен иметь имя `kplugin-<name>.so` и
|
|
|
находиться в директории `/usr/lib/klish/plugins` (если klish был сконфигурирован
|
|
|
с `--prefix=/usr`).
|
|
|
|
|
|
|
|
|
#### Атрибут `id`
|
|
|
|
|
|
-Атрибут используется для формирования имени файла плугина, если не указан атрибут
|
|
|
-`file`. Плугин должен иметь имя `kplugin-<id>.so` и находиться в директории
|
|
|
+Атрибут используется для формирования имени файла плагина, если не указан атрибут
|
|
|
+`file`. Плагин должен иметь имя `kplugin-<id>.so` и находиться в директории
|
|
|
`/usr/lib/klish/plugins` (если klish был сконфигурирован
|
|
|
с `--prefix=/usr`).
|
|
|
|
|
|
Если указан атрибут `id`, то `name` не будет использоваться для формирования
|
|
|
-имени файла плугина, а только для идентификации внутри файлов конфигурации.
|
|
|
+имени файла плагина, а только для идентификации внутри файлов конфигурации.
|
|
|
|
|
|
```
|
|
|
<PLUGIN name="alias_for_klish" id="klish"\>
|
|
@@ -495,9 +526,9 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
|
|
|
#### Атрибут `file`
|
|
|
|
|
|
-Полное имя файла плугина (разделяемой библиотеки) может быть указано в явном
|
|
|
+Полное имя файла плагина (разделяемой библиотеки) может быть указано в явном
|
|
|
виде. Если указан атрибут `file`, то никакие другие атрибуты не будут
|
|
|
-использоваться для формирования имени файла плугина, а будет взято значение
|
|
|
+использоваться для формирования имени файла плагина, а будет взято значение
|
|
|
`file` "как есть" и передано функции dlopen(). Это означает, что может быть
|
|
|
указан как абсолютный путь, так и просто имя файла, но в таком случае файл
|
|
|
должен находиться по стандартным путям, используемым при поиске разделяемой
|
|
@@ -513,8 +544,8 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
#### Данные внутри тега
|
|
|
|
|
|
Данные внутри тега `PLUGIN` могут быть обработаны функцией инициализации
|
|
|
-плугина. Формат данных остается на усмотрение самого плугина. Например,
|
|
|
-в качестве данных могут быть указаны настройки для плугина.
|
|
|
+плагина. Формат данных остается на усмотрение самого плагина. Например,
|
|
|
+в качестве данных могут быть указаны настройки для плагина.
|
|
|
|
|
|
```
|
|
|
<PLUGIN name="sysrepo">
|
|
@@ -576,7 +607,7 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
соответствующей команды, действия, определенные в `ACTION` будут выполнены.
|
|
|
|
|
|
Основным атрибутом `ACTION` является `sym`. Действие может выполнять только
|
|
|
-символы (функции), определенные в плугинах. Атрибут `sym` ссылается на такой
|
|
|
+символы (функции), определенные в плагинах. Атрибут `sym` ссылается на такой
|
|
|
символ.
|
|
|
|
|
|
Действия могут выполняться не только командой. Далее приведен список тегов,
|
|
@@ -638,21 +669,21 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
|
|
|
#### Атрибут `sym`
|
|
|
|
|
|
-Атрибут ссылается на символ (функцию) из плугина. Эта функция будет выполнена при
|
|
|
+Атрибут ссылается на символ (функцию) из плагина. Эта функция будет выполнена при
|
|
|
выполнении `ACTION`. В качестве значения может быть указано имя символа, например
|
|
|
`sym="my_sym"`. В таком случае поиск символа будет происходить по всем
|
|
|
-загруженным плугинам. Если указан плугин, в котором надо искать символ, например
|
|
|
-`sym="my_sym@my_plugin"`, то в других плугинах поиск производиться не будет.
|
|
|
+загруженным плагинам. Если указан плагин, в котором надо искать символ, например
|
|
|
+`sym="my_sym@my_plugin"`, то в других плагинах поиск производиться не будет.
|
|
|
|
|
|
В разных ситуациях может быть выгодно использовать разные подходы, относительно
|
|
|
-того, указывать ли имя плугина для символа. С одной стороны, несколько плугинов
|
|
|
+того, указывать ли имя плагина для символа. С одной стороны, несколько плагинов
|
|
|
могут содержать символы с одинаковым именем и для однозначной идентификации
|
|
|
-символа указание плугина будет обязательным. Кроме этого при указании плугина
|
|
|
+символа указание плагина будет обязательным. Кроме этого при указании плагина
|
|
|
поиск символа будет проходить немного быстрее. С другой стороны, можно написать
|
|
|
некие универсальные команды, в которых указываются символы без принадлежности к
|
|
|
-плугину. Тогда несколько плугинов могут реализовать "интерфейс", т.е. все
|
|
|
+плагину. Тогда несколько плагинов могут реализовать "интерфейс", т.е. все
|
|
|
используемые символы, а их реальное содержание будет зависеть от того, какой
|
|
|
-плугин загружен.
|
|
|
+плагин загружен.
|
|
|
|
|
|
|
|
|
#### Атрибут `lock`
|
|
@@ -707,12 +738,12 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
Возможные значения атрибута - `true` и `false`. По умолчанию `false`, т.е.
|
|
|
действие не является "постоянным" и будет отключено в режиме "dry-run".
|
|
|
|
|
|
-Символы, при объявлении их в плугине, уже имеют признак постоянства. Символ
|
|
|
+Символы, при объявлении их в плагине, уже имеют признак постоянства. Символ
|
|
|
может быть принудительно объявлен постоянным, принудительно объявлен
|
|
|
-непостоянным, либо плугин может отдать решение о постоянстве на откуп
|
|
|
-пользователю. Если флаг постоянства объявлен принудительно в плугине, то
|
|
|
+непостоянным, либо плагин может отдать решение о постоянстве на откуп
|
|
|
+пользователю. Если флаг постоянства объявлен принудительно в плагине, то
|
|
|
настройка атрибута `permanent` не будет влиять ни на что. Она не может
|
|
|
-переопределить флаг постоянства, принудительно определенный внутри плугина.
|
|
|
+переопределить флаг постоянства, принудительно определенный внутри плагина.
|
|
|
|
|
|
|
|
|
#### Атрибут `sync`
|
|
@@ -727,12 +758,12 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
Возможные значения атрибута - `true` и `false`. По умолчанию `false`, т.е.
|
|
|
символ будет выполняться асинхронно.
|
|
|
|
|
|
-Символы, при объявлении их в плугине, уже имеют признак синхронности. Символ
|
|
|
-может быть принудительно объявлен синхронным, асинхронным, либо плугин может
|
|
|
+Символы, при объявлении их в плагине, уже имеют признак синхронности. Символ
|
|
|
+может быть принудительно объявлен синхронным, асинхронным, либо плагин может
|
|
|
отдать решение о синхронности на откуп пользователю. Если флаг постоянства
|
|
|
-объявлен принудительно в плугине, то настройка атрибута `sync` не будет влиять
|
|
|
+объявлен принудительно в плагине, то настройка атрибута `sync` не будет влиять
|
|
|
ни на что. Она не может переопределить флаг синхронности, принудительно
|
|
|
-определенный внутри плугина.
|
|
|
+определенный внутри плагина.
|
|
|
|
|
|
|
|
|
#### Атрибут `update_retcode`
|
|
@@ -832,7 +863,7 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
#### Данные внутри тега
|
|
|
|
|
|
Данные внутри тега `ACTION` используются по усмотрению самого символа,
|
|
|
-указанного атрибутом `sym`. Как пример можно привести символ `script` из плугина
|
|
|
+указанного атрибутом `sym`. Как пример можно привести символ `script` из плагина
|
|
|
`script`. Этот символ использует данные внутри тега, как код скрипта, который
|
|
|
он должен выполнить.
|
|
|
|
|
@@ -1675,7 +1706,7 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
```
|
|
|
|
|
|
В примере объявляется тип данных "ptype1". Это целое число и символ `INT` из
|
|
|
-стандартного плугина "klish" проверяет, что введенный аргумент действительно
|
|
|
+стандартного плагина "klish" проверяет, что введенный аргумент действительно
|
|
|
является целым числом.
|
|
|
|
|
|
Другие варианты использования тега `PTYPE` и атрибута `ptype` рассматриваются в
|
|
@@ -1723,7 +1754,7 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
|
|
|
В примере для `VIEW` с именем "main", который является текущим путем по
|
|
|
умолчанию при запуске klish, определяется приглашение пользователя. В `ACTION`
|
|
|
-используется символ `prompt` из стандартного плугина "klish", который помогает
|
|
|
+используется символ `prompt` из стандартного плагина "klish", который помогает
|
|
|
в формировании приглашения, заменяя конструкции `%u` или `%h` подстановками.
|
|
|
В частности `%u` заменяется на имя текущего пользователя, а `%h` на имя хоста.
|
|
|
|
|
@@ -1835,23 +1866,23 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
если не существует, то команда скрыта.
|
|
|
|
|
|
|
|
|
-## Плугин "klish"
|
|
|
+## Плагин "klish"
|
|
|
|
|
|
-В состав дерева исходных кодов klish входит код стандартного плугина "klish".
|
|
|
-Плугин содержит базовые типы данных, команду навигации и другие вспомогательные
|
|
|
-символы. В подавляющем большинстве случаев этот плугин нужно использовать.
|
|
|
+В состав дерева исходных кодов klish входит код стандартного плагина "klish".
|
|
|
+Плагин содержит базовые типы данных, команду навигации и другие вспомогательные
|
|
|
+символы. В подавляющем большинстве случаев этот плагин нужно использовать.
|
|
|
Однако он не подключается автоматически, т.к. в каких-то редких специфических
|
|
|
случаях может понадобиться возможность работать без него.
|
|
|
|
|
|
-Стандартный способ подключить плугин "klish" в конфигурационных файлах:
|
|
|
+Стандартный способ подключить плагин "klish" в конфигурационных файлах:
|
|
|
|
|
|
```
|
|
|
<PLUGIN name="klish"/>
|
|
|
```
|
|
|
|
|
|
-Вместе с плугином идет файл `ptypes.xml`, где объявлены базовые типы данных в
|
|
|
+Вместе с плагином идет файл `ptypes.xml`, где объявлены базовые типы данных в
|
|
|
виде элементов [`PTYPE`](#ptype). Объявленные типы данных используют символы
|
|
|
-плугина для проверки соответствия аргумента типу данных.
|
|
|
+плагина для проверки соответствия аргумента типу данных.
|
|
|
|
|
|
|
|
|
### Типы данных
|
|
@@ -2016,9 +2047,9 @@ push /view_name1
|
|
|
```
|
|
|
|
|
|
|
|
|
-## Плугин "script"
|
|
|
+## Плагин "script"
|
|
|
|
|
|
-Плугин "script" содержит всего один символ `script` и служит для выполнения
|
|
|
+Плагин "script" содержит всего один символ `script` и служит для выполнения
|
|
|
скриптов. Скрипт содержится в теле элемента `ACTION`. Скрипт может быть написан
|
|
|
на разных скриптовых языках программирования. По умолчанию считается, что скрипт
|
|
|
написан для интерпретатора shell и запускается при помощи `/bin/sh`. Чтобы
|
|
@@ -2026,8 +2057,8 @@ push /view_name1
|
|
|
текст вида `#!/path/to/binary`, находящийся в самой первой строке скрипта.
|
|
|
Текст `/path/to/binary` - это путь, по которому находится интерпретатор скрипта.
|
|
|
|
|
|
-Плугин `script` входит в состав исходного кода проекта klish, а подключить
|
|
|
-плугин можно следующим образом:
|
|
|
+Плагин `script` входит в состав исходного кода проекта klish, а подключить
|
|
|
+плагин можно следующим образом:
|
|
|
|
|
|
```
|
|
|
<PLUGIN name="script"/>
|
|
@@ -2074,16 +2105,16 @@ push /view_name1
|
|
|
объявлен `ACTION` считается уже второй и определять шебанг в ней нельзя.
|
|
|
|
|
|
|
|
|
-## Плугин "lua"
|
|
|
+## Плагин "lua"
|
|
|
|
|
|
-Плугин "lua" содержит всего один символ `lua` и служит для выполнения
|
|
|
+Плагин "lua" содержит всего один символ `lua` и служит для выполнения
|
|
|
скриптов на языке "Lua". Скрипт содержится в теле элемента `ACTION`. В отличие
|
|
|
-от символа `script` из плугина ["script"](#плугин-script), символ `lua` не
|
|
|
+от символа `script` из плагина ["script"](#плагин-script), символ `lua` не
|
|
|
вызывает внешнюю программу-интерпретатор для выполнения скриптов, а использует
|
|
|
внутренние механизмы для этого.
|
|
|
|
|
|
-Плугин `lua` входит в состав исходного кода проекта klish, а подключить
|
|
|
-плугин можно следующим образом:
|
|
|
+Плагин `lua` входит в состав исходного кода проекта klish, а подключить
|
|
|
+плагин можно следующим образом:
|
|
|
|
|
|
```
|
|
|
<PLUGIN name="lua"/>
|
|
@@ -2093,7 +2124,7 @@ push /view_name1
|
|
|
|
|
|
### Параметры конфигурации
|
|
|
|
|
|
-Рассмотрим параметры конфигурации плугина.
|
|
|
+Рассмотрим параметры конфигурации плагина.
|
|
|
|
|
|
#### autostart
|
|
|
|
|
@@ -2101,7 +2132,7 @@ push /view_name1
|
|
|
autostart="/usr/share/lua/klish/autostart.lua"
|
|
|
```
|
|
|
|
|
|
-Когда плугин инициализируется, создаётся состояние Lua-машины которое (после fork)
|
|
|
+Когда плагин инициализируется, создаётся состояние Lua-машины которое (после fork)
|
|
|
и будет использоваться для вызова Lua `ACTION` кода. Если необходимо загрузить
|
|
|
какие-то библиотеки, это можно сделать за счёт задания autostart файла. Параметр
|
|
|
может быть только один.
|