Я использую терминал redhat-linux для подключения к устройству маршрутизатора посредством telnet.

В то время как устройство загружается, символы печатаются мусором, как показано ниже:

вывод терминала Redhar Linux в то время как Telnet

В терминале, если я нажимаю на меню «Терминал» -> «Сброс», то он меняется на правильный алфавитный.

Есть ли способ предотвратить это?

Я попытался установить кодировку терминала в UTF-8 из опций меню. Но все та же проблема.

1 ответ1

0

Вы заявили, что этот вывод происходит, когда устройство загружается, верно?

Исходя из вывода, ваш терминал получает последовательность CTRL- N , также известную как символ SHIFT-OUT (SO), переключая ваш набор символов в альтернативный набор символов (G1). Вот почему сброс терминала восстанавливает читабельность для вас. (через несколько лет ... ты сможешь прочитать этот бред!) Вы должны быть в состоянии вернуться к кодировке по умолчанию (G0), отправив CTRL - O (Ооо, не ноль) (SHIFT-IN (SI)).

echo ^V^O   # or something similar would suffice.

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

По сути, ваш маршрутизатор отправляет символ SO , вероятно, не преднамеренно, но, возможно, в виде шума линии или мусора во время последовательности загрузки. ({пожимание плечами} может быть намеренным, чтобы закодировать вывод, чтобы сдержать взгляды ... но, вероятно, нет)

Я ищу решение, чтобы предотвратить переход на Alt-CharSet ... Я вернусь...


РЕДАКТИРОВАТЬ:

Ссылка на терминал vt100 показывает, как переопределить альтернативный набор символов (G1) для одного из нескольких возможных наборов, возможно, мы могли бы установить набор G1 (SO) таким же, как набор G0 (SI)?

echo -e "\e(B"  # sets G0 to USASCII
echo -e "\e)B"  # sets G1 to USASCII (default is "\e)0" (zero))

или, как одна команда:

echo -e "\e(B\e)B"

Это должно привести к тому, что ваша кодировка G1 станет читаемой буквой с этого момента. Конечно, это блокирует любую попытку нарисовать классную линейную графику. Облом. Но ... это будет работать.

alias telnet-router='echo -en "\e(B\e)B"; telnet mr_router; echo -en "\e(B\e)0"'

Установите G0/G1, вызовите telnet, снова установите G0/G1 на значения по умолчанию.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .