Редактирование: Telnet-скрипты

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
= Общие сведения =
 
Все поступающие в ComConfig команды будут выполняться '''строго''' в том же порядке, в котором они поступили. Исключение составляют лишь неверные команды или команды, которые не могут выполниться больше суток (по причине возникновения ошибок). Такие команды удаляются из очереди, давая возможность выполниться командам, поступившим в очередь позже.
 
 
Каждый telnet-скрипт (кроме <code>CommutatorLogin</code> и <code>CommutatorLogout</code>) должен представлять из себя законченный unit-of-work. Нужно исходить из предположения, что на момент начала выполнения любого скрипта имеется открытая telnet-сессия, которая ожидает ввода пользователя. После завершения выполнения скрипта telnet-сессия должна оставаться в том же виде, в котором была на начало выполнения. Т.е. скрипт не должен оставить сессию в контексте выполнения какой-то команды свитча (например, войти в режим <code>config</code> и не выйти из него). Только так можно гарантировать, что выполнение данного скрипта никак не помешает выполнению последующих скриптов, которые будут выполняться в той же сессии.
 
 
Отдельного внимания заслуживают скрипты <code>CommutatorLogin</code> и <code>CommutatorLogout</code>.<br>
 
 
В отличие от всех других скриптов, <code>CommutatorLogin</code> должен начинаться с команды <code>expect</code> (или аналогичной). Данный скрипт всегда выполняется самый первый после открытия telnet-сессии, и прежде, чем что-то слать в telnet-сессию (например, имя пользователя и пароль) нужно дождаться приглашения от telnet-сервера.
 
 
<code>CommutatorLogout</code> же, напротив, всегда выполняться самым последним, перед закрытием telnet-сессии, поэтому его последней командой не должна быть <code>expect</code> (или аналогичная). Последняя команда этого скрипта должна закрывать telnet-сессию, а после закрытия сессии уже нечего ожидать.
 
 
 
ComConfig имеет тенденцию склеивать быстро поступающие подряд команды (до 5ти штук), чтобы выполнять их все в одной telnet-сессии, без постоянного залогинивания и разлогинивания. Если поступила одна команда, то будет открыта новая telnet-сессия, в ней будет выполнена команда <code>CommutatorLogin</code>, затем поступившая команда и, наконец, <code>CommutatorLogout</code>. После выполнения этой последовательности ожидается закрытие telnet-сессии, и если она не была закрыта в течение заданного таймаута, значит что-то пошло не так (возможно, не корректен один из telnet-скриптов).
 
 
Пока происходит выполнение команды на свитче, в очередь команд для этого же свитча вполне могут поступить еще несколько команд. В этом случае после успешного завершения выполняемой в данный момент команды, ComConfig склеит до 5-ти ждущих в очереди команд и попытается выполнить их все в одной telnet-сессии, выполнив скрипты <code>CommutatorLogin</code> и <code>CommutatorLogout</code> только 1 раз, вначале и, соответственно, в конце.<br>
 
Т.о., если в очереди успело накопиться 3 команды <code>Command1</code>, <code>Command2</code> и <code>Command3</code>, то последовательность выполнения скриптов в одной telnet-сессии будет такая:
 
* CommutatorLogin
 
* Command1
 
* Command2
 
* Command3
 
* CommutatorLogout
 
 
Если накопилось больше 5-ти команд, ComConfig объединит лишь первые 5, оставив оставшиеся в очереди дожидаться успешного выполнения этих пяти. Затем возьмет еще 5 (или меньше, если 5 не набирается) и т.д.
 
 
Если какая-то команда не выполнена успешно, весь пакет команд отправляется в начало очереди и через время ComConfig пытается снова, при этом ComConfig будет пытаться выполнять команды по одной, пока хотя бы одна из них не выполнится успешно. Т.о. достигается некоторая отказоустойчивость, если ошибка проявляется только в случае, если команды выполняются в пакете, но не проявляется, если выполняются по одной. Хотя в большинстве случаев это может сигнализировать о некорректно написанном скрипте.
 
 
Если какая-то команда так и не смогла выполниться больше, чем за <code>MAX_COMMAND_AGE</code> (в данный момент 1 день) либо ошибка, возникшая при ее выполнении относится к разряду тех, которые не могут исправиться самостоятельно (telnet-скрипт некорректен или не найден или команда коммутатора не найдена), то данная команда удаляется из головы очереди, позволяя выполниться последующим командам в очереди.
 
 
 
= Скрипты конфигурирования порта =
 
= Скрипты конфигурирования порта =
  
Строка 38: Строка 10:
 
* PortConfigTransit
 
* PortConfigTransit
 
* PortMediaType*
 
* PortMediaType*
 
== Тип порта SEGMENT ==
 
* PortConfigSegment
 
* PortMediaType*
 
 
== Тип порта CLIENT ==
 
* PortConfigClient
 
* Один из: PortUnauth, PortAuth, PortDisabled
 
* PortMediaType*
 
 
== Тип порта DEDICATED ==
 
Ничего не делается.
 
 
== Тип порта SHUTDOWN ==
 
* PortConfigShutdown
 
* PortMediaType*
 
 
== Неизвестный тип порта ==
 
* PortMediaType*
 
 
 
= Язык написания скрипта =
 
=== [[Legacy]] ===
 
=== [[Groovy]] ===
 

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии GNU Free Documentation License 1.3 (см. Wikipoint:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!