Общие сведения о системе
Командная оболочка NSG Shell
Сложный ввод параметров и разовых команд

Расширенный формат ввода команд и параметров предназначн, в основном, для пакетного запуске nsgsh из скриптов bash. Однако отдельные его элементы могут быть удобны и при интерактивной работе.

Допускается не только пошаговый переход от узла к узлу, но и ввод всего пути к нужному узлу или параметру целиком:

node1.node2...nodeN
Переход в узел N, начиная от текущего положения на командном дереве.
node1.node2...nodeN.parameter
Переход к установке значения параметра (или исполнению разовой команды).
node1.node2...nodeN.parameter=значение
Установка значения и возврат в исходную точку дерева. При написании команды в данном формате знаки . и = не являются спецсимволами и могут вводиться как есть.
node1.node2...nodeN.parameter.значение
Установка значения и возврат в исходную точку. В отличие от предыдущего формата, если значение является строковым параметром и может содержать символы . и =, то их необходимо вводить в виде esc-последовательностей \. и \=, либо заключить всё значение в кавычки (двойные или одинарные). Это устаревший формат, поддерживаемый для совместимости с ранними версиями NSG Linux 2.0.x; использовать его в новых конфигурациях не рекомендуется.
.node1.node2...nodeN
Переход в узел N, начиная от корня командного дерева.
..
Переход в родительский узел дерева.
...
Переход в прародительский узел дерева.

и т.п.

..node1.node2...nodeN
Переход в узел N, начиная от родительского узла.

и т.п.

Аналогично для ввода параметров.

Названия параметров и названия узлов дерева, как и значения параметров, могут содержать спецсимволы. В этом случае для них действуют те же правила ввода, что и для строковых параметров — т.е. проблемный узел вводится в кавычках или с использованием esc-последовательностей. Без особой необходимости такие названия употреблять не следует, но если есть такая потребность, то это не запрещается, например:

.tunnel.ipsec.connections."Kolxoz \"Krasnyi Konoplevod\"".leftid=Pravlenie\ Kolxoza

В одной строке допускается вводить несколько команд, разделяя их пробелами и/или точкой с запятой (в любом сочетании), например:

nsg:port.m1> type="3g" ppp.main.chat.APN=access.point.name; ppp.main.chat.mode=GSM Enter

В этом случае команды исполняются последовательно, как если бы между ними нажималась клавиша Enter. Иначе говоря, последующие команды могут быть зависимыми от предыдущих (а также от установок, вытекающих из них по умолчанию). В приведённом примере существенно то, что первым устанавливается тип порта 3g и следующая из него инкапсуляция ppp; только после этого в дереве появляются специфические для PPP узлы и параметры, которые отрабатываются второй и третьей командами. При вводе команд в обратной последовательности они не выполнятся.

Переход в некоторый узел и исполнение нескольких команд в нём. Например, приведённая выше последовательность команд может быть записана так:

nsg:port.m1> type="3g" ppp.main.chat(APN=access.point.name mode=GSM) Enter

Следует обратить внимание, что открывающая скобка одновременно заменяет собой точку. Перед скобками и после них допускаются пробелы.

Допускается многоуровневая вложенность:

nsg:port > m1(type="3g" ppp.main(chat(APN=access.point.name; mode=GSM) set-defaultroute=true)) Enter

Последней командой в строке или в подстроке (в скобках) может быть как установка параметра, так и переход в некоторый узел. Если же переход в узел стоит не последним, то следующая команда будет исполнена от исходного узла, и сделанный ранее переход будет забыт.

Аналогичным образом могут исполняться системные команды в заданном узле. Кроме того, для ряда команд возможен ещё один формат:

node1.node2...nodeN._print
=node1.node2...nodeN
Вывести пользовательскую конфигурацию узла nodeN.
=
Вывести пользовательскую конфигурацию текущего узла.
node1.node2...nodeN._show
==node1.node2...nodeN
Вывести полную конфигурацию (включая все значения по умолчанию) узла nodeN.
==
Вывести полную конфигурацию текущего узла.
node1.node2...nodeN._manual
?node1.node2...nodeN
Вывести справку для узла nodeN (аналогично — для параметра).
?
Вывести справку для текущего узла.
node1.node2...nodeN._new=имя
node1.node2...nodeN._insert=имя
+node1.node2...nodeN.имя
+имя
Добавить новый элемент списка (тип списка определяется автоматически) с заданным именем или номером.
+node1.node2...nodeN._new
+node1.node2...nodeN._insert
+
Добавить новый элемент списка в указанный (или текущий) узел без явного указания. Будет выведено интерактивное приглашение ко вводу имени/номера элемента.
node1.node2...nodeN.имя._remove
-node1.node2...nodeN
-node1.node2...nodeN.имя
Удалить заданный узел или параметр. Для узлов и параметров, существующих всегда (т.е. не являющихся элементами списков) — установить для узла и всех его дочерних элементов значения по умолчанию.
-
Удалить или очистить текущий узел/параметр.

© Network Systems Group 2015–2024 Отдел документации