Telnet-скрипты

Общие сведения[править]

Все поступающие в ComConfig команды будут выполняться строго в том же порядке, в котором они поступили. Исключение составляют лишь неверные команды или команды, которые не могут выполниться больше суток (по причине возникновения ошибок). Такие команды удаляются из очереди, давая возможность выполниться командам, поступившим в очередь позже.

Каждый telnet-скрипт (кроме CommutatorLogin и CommutatorLogout) должен представлять из себя законченный unit-of-work. Нужно исходить из предположения, что на момент начала выполнения любого скрипта имеется открытая telnet-сессия, которая ожидает ввода пользователя. После завершения выполнения скрипта telnet-сессия должна оставаться в том же виде, в котором была на начало выполнения. Т.е. скрипт не должен оставить сессию в контексте выполнения какой-то команды свитча (например, войти в режим config и не выйти из него). Только так можно гарантировать, что выполнение данного скрипта никак не помешает выполнению последующих скриптов, которые будут выполняться в той же сессии.

Отдельного внимания заслуживают скрипты CommutatorLogin и CommutatorLogout.

В отличие от всех других скриптов, CommutatorLogin должен начинаться с команды expect (или аналогичной). Данный скрипт всегда выполняется самый первый после открытия telnet-сессии, и прежде, чем что-то слать в telnet-сессию (например, имя пользователя и пароль) нужно дождаться приглашения от telnet-сервера.

CommutatorLogout же, напротив, всегда выполняться самым последним, перед закрытием telnet-сессии, поэтому его последней командой не должна быть expect (или аналогичная). Последняя команда этого скрипта должна закрывать telnet-сессию, а после закрытия сессии уже нечего ожидать.


ComConfig имеет тенденцию склеивать быстро поступающие подряд команды (до 5ти штук), чтобы выполнять их все в одной telnet-сессии, без постоянного залогинивания и разлогинивания. Если поступила одна команда, то будет открыта новая telnet-сессия, в ней будет выполнена команда CommutatorLogin, затем поступившая команда и, наконец, CommutatorLogout. После выполнения этой последовательности ожидается закрытие telnet-сессии, и если она не была закрыта в течение заданного таймаута, значит что-то пошло не так (возможно, не корректен один из telnet-скриптов).

Пока происходит выполнение команды на свитче, в очередь команд для этого же свитча вполне могут поступить еще несколько команд. В этом случае после успешного завершения выполняемой в данный момент команды, ComConfig склеит до 5-ти ждущих в очереди команд и попытается выполнить их все в одной telnet-сессии, выполнив скрипты CommutatorLogin и CommutatorLogout только 1 раз, вначале и, соответственно, в конце.
Т.о., если в очереди успело накопиться 3 команды Command1, Command2 и Command3, то последовательность выполнения скриптов в одной telnet-сессии будет такая:

  • CommutatorLogin
  • Command1
  • Command2
  • Command3
  • CommutatorLogout

Если накопилось больше 5-ти команд, ComConfig объединит лишь первые 5, оставив оставшиеся в очереди дожидаться успешного выполнения этих пяти. Затем возьмет еще 5 (или меньше, если 5 не набирается) и т.д.

Если какая-то команда не выполнена успешно, весь пакет команд отправляется в начало очереди и через время ComConfig пытается снова, при этом ComConfig будет пытаться выполнять команды по одной, пока хотя бы одна из них не выполнится успешно. Т.о. достигается некоторая отказоустойчивость, если ошибка проявляется только в случае, если команды выполняются в пакете, но не проявляется, если выполняются по одной. Хотя в большинстве случаев это может сигнализировать о некорректно написанном скрипте.

Если какая-то команда так и не смогла выполниться больше, чем за MAX_COMMAND_AGE (в данный момент 1 день) либо ошибка, возникшая при ее выполнении относится к разряду тех, которые не могут исправиться самостоятельно (telnet-скрипт некорректен или не найден или команда коммутатора не найдена), то данная команда удаляется из головы очереди, позволяя выполниться последующим командам в очереди.

Скрипты конфигурирования порта[править]

При конфигурировании порта скрипты выполняются в следующей последовательности:

Тип порта MAGISTRAL[править]

  • PortConfigMagistral
  • PortMediaType*

Тип порта TRANSIT[править]

  • PortConfigTransit
  • PortMediaType*

Тип порта SEGMENT[править]

  • PortConfigSegment
  • PortMediaType*

Тип порта CLIENT[править]

  • PortConfigClient
  • Один из: PortUnauth, PortAuth, PortDisabled
  • PortMediaType*

Тип порта DEDICATED[править]

Ничего не делается.

Тип порта SHUTDOWN[править]

  • PortConfigShutdown
  • PortMediaType*

Неизвестный тип порта[править]

  • PortMediaType*


Язык написания скрипта[править]

Legacy[править]

Groovy[править]