Интерфейс пользователя

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

      редактирование длинных строк (которые не полностью помещаются в окне терминала);

      паузы при выводе длинной конфигурации по команде show running-config;

      вызов внешних терминальных программ (например, vi, less, top и т.п.) с помощью команды run.

При старте cs_console в некоторых случаях могут возникать проблемы, связанные с некорректным определением размеров терминала. Такие проблемы возникают, если используется системная консоль, подключенная по COM-порту, в том числе, если используется системная консоль МСМ.

 

Примечание

Непосредственный доступ к системной консоли МСМ всегда происходит через COM-порт, даже если пользователь осуществляет его из терминальной сессии Cisco IOS по протоколу SSH или telnet.

 

 

Далее подробно описаны данные проблемы и рекомендации по их решению.

При старте cs_console происходит определение размеров терминала (ширина и длина):

Сначала делается попытка прочитать размеры терминала из переменных окружения:

ширина терминала:

COLUMNS 

длина терминала:

LINES 

Эти переменные окружения могут быть переопределены пользователем при запуске cs_console, например:

COLUMNS=80 LINES=24 /opt/VPNagent/bin/cs_console

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

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

Если системный вызов вернул ошибку или выдал значения ширины и длины, равные 0 (такое происходит, если используется системная консоль, подключенная по COM-порту, в том числе если используется системная консоль NME-RVPN (МСМ)), то делается попытка прочитать характеристики терминала ”co” (ширина) и ”li” (длина) с помощью системного вызова tgetnum.

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

Если ширину и длину терминала получить не удалось ни одним из указанных выше способов, то выставляются значения по умолчанию: ширина - 511, длина - 0.

 

Примечание

Данное поведение отличается от поведения Cisco IOS: там, в подобной ситуации выставляются значения: ширина - 80, длина - 24.

 

 

Результат определения размеров терминала (если не используются переменные окружения COLUMNS / LINES) может отличаться в зависимости от:

•   типа подключения терминала (COM-порт, SSH и т.п.);

      операционной системы, на которой установлен С-Терра Шлюз;

      клиентского терминального приложения, используемого для подключения к консоли.

Проверить размеры терминала в запущенной консоли можно с помощью команды show terminal.

Если cs_console уже стартовала, а в ней заданы некорректные размеры терминала, то их можно исправить с помощью команд terminal width / terminal length.

Возможна реакция cs_console на изменение размеров терминала, если для этого существует техническая возможность:

Данную реакцию можно наблюдать, например, следующим образом: начать вводить очень длинную строку, инициирующую горизонтальный скроллинг; и после этого изменить ширину терминального окна.

Реакция на изменение размеров терминала: перерисовка строки происходит только после ввода следующего символа или нажатия управляющей клавиши.

Наличие или отсутствие реакции на изменение размеров терминала также зависит от разных факторов:

•    типа подключения терминала (COM-порт, SSH и т.п.);

      клиентского терминального приложения, используемого для подключения к консоли.

Как правило, реакция на изменение размеров окна:

•   присутствует в случае подключения по SSH (при условии, что клиентское приложение корректно обрабатывает изменение размеров терминального окна и оповещает SSH-сервер о нем);

•   отсутствует при подключении к системной консоли по COM-порту, в том числе к системной консоли МСМ.

Если размеры терминала переопределены с помощью команд terminal width, terminal length, то реакция на изменение размеров терминала отсутствует (значения, заданные в этих командах, считаются более приоритетными).