Expect-скрипты

Expect-скрипты (скрипты ожидания) определяют серию команд, которые могут отправляться устройствам и ожидать от них ответа, контролирующего поведение скрипта. Для выполнения Expect-скрипта, SberMobile Server подключается к устройству при помощи протоколов Telnet или SSH.

Expect-скрипты делятся на три группы:

  • Скрипты чтения конфигурации. Эти скрипты вызываются только из последовательностей резервирования конфигураций устройств.

  • Скрипты записи конфигурации. Эти скрипты вызываются только из последовательностей восстановления конфигураций устройств.

  • Скрипты конфигурации. Это скрипты общего назначения, используемые для изменения конфигураций устройств или контролирования устройств.

Скрипты управляются через настройки глобальной конфигурации драйвера устройства Хоста Сети.

Структура скрипта

Каждый Expect-скрипт настраивается как таблица. Запись в этой таблице определяет команду для отправки устройству и ожидаемый выход устройства.

Каждая запись скрипта содержит:

  • Ожидать. Это Выражение SberMobile, которое должно иметь результатом строку. Эта строка будет являться регулярным выражением, которому должен соответствовать выход устройства. Регулярное выражение "завернуто" в Выражение SberMobile, чтобы дать возможность динамического построения регулярного выражения, зависящего от среды.

Чтобы поместить статическое ругулярное выражение в поле Expect, заключите его в одинарные или двойные кавычки, но не вставляйте какие-либо кавычки или обратные косые черты в само выражение.

Пример: "(?s).*\s*(([Uu]sername: )|([Ll]ogin.*: ))\z"

Это значение поля Ожидать будет иметь результатом следующее регулярное выражение: (?s).*s*(([Uu]sername: )|([Ll]ogin.*: ))z

Это регулярное выражение, в свою очередь, будет соответствовать приглашениям ввода Login: или Username:, отправленным устройством. Таким образом, это поле Ожидать соответствует тому, чтобы ожидать приглашение о вводе имени пользователя устройства.

  • Отправить. Это Выражение SberMobile, которое должно иметь результатом строку. Эта строка будет отправлена устройству, когда от устройства приходит текст, соответствующий полю Ожидать.

Пример: {username}

Это значение поля Отправить будет иметь результатом имя пользователя, определенное в настройках резервирования и восстановления конфигурации каждого устройства.

Пример: 'enable'

Это значение поля Отправить вызовет отправку устройству команды enable.

Пример: 'show ' + {env/configurationType} + '-config'

Это значение поля Отправить ссылается на переменную среды configurationType, определенную ранее выполненными правилами последовательности резевирования/восстановления конфигурации, которая вызвала это Expect-скрипт.

  • Скрипт ошибки. Подобно полю Ожидать, это Выражение SberMobile, которое должно иметь результатом строку. Эта строка будет обрабатываться как регулярное выражение, которому должен соответствовать выход устройства. Если это происходит, ответ устройства считается ошибочным, а выполнение Expect-скрипта заканчивается сообщением об ошибке, определенным полем Сообщение об ошибке.

  • Сообщение об ошибке. Это Выражение SberMobile, которое должно иметь результатом строку. Эта строка вернется как сообщение об ошибке, если выход устройства будет соответствовать регулярному выражению, определенному полем Ожидать ошибку.

  • Выход. Это Выражение SberMobile, которое должно иметь результатом строку, представляющую имя переменной среды. Любой выход, произведенный устройством в ответ на команду Отправить, будет записан в эту переменную.

Пример: 'configuration'

Это выражение разрешается в строку configuration. Таким образом, реакция устройства на команду Отправить будет записываться в переменую среды configuration.

  • Фильтр выхода. Это Выражение SberMobile, которое должно иметь результатом строку. Эта строка будет обрабатываться как регулярное выражение. Любая строка, соответствующая этому выражению, будет удаляться из выхода устройства, полученного в ответ на команду Отправить до того, как этот выход записывается в переменную Выход.

Пример: "(Building)|(Current)|(Using)|(show)"

Это значение поля Фильтр выхода будет разрешаться в регулярное выражение (Building)|(Current)|(Using)|(show).

Таким образом, слова Building, Current, Using и Show будут удаляться из выхода устройства и помещаться в переменную Выход.

  • Комментарии. Любое дополнение, описывающее назначение строки Expect-скрипта.

Среда вычисления для выражений ожидать, отправить, ожидать ошибку, сообщение об ошибке, выход и фильтр выхода

Среда вычисления выражения Expect-скрипта:

Контекст по умолчанию

Контекст устройства для конфигурирования.

Таблица данных по умолчанию

  • Таблица резервирования или восстановления параметров для скрипта Чтение Конфигурации или Запись Конфигурации. Формат таблицы определяется Форматом параметров резервирования или Форматом параметров восстановления, определенным в той же записи Таблицы конфигурации, которая определяет текущую последовательность резервирования/восстановления.

  • Отсутствует для обычных скриптов Конфигурации.

Ряд по умолчанию

0

Переменные среды

Стандартные переменные.

Переменные среды, определенные ранее выполненными правилами последовательности резервирования или восстановления, если скрипт вызывается из такой последовательности.

Дополнительные переменные:

Имя переменной

Тип значения

Описание

configurationType

строка

Тип конфигурации устройства, который резервируется или восстанавливается. Эта переменная недоступна для обычных скриптов конфигурации.