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

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

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

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

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

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

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

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

 

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

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

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

COLUMNS 

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

LINES

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

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

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

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

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

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

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

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

 

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

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

·       операционной системы, на которой установлен S-Terra Gate;

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

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

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

 

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

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

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

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

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

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

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

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

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

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