Журнал «вывод на печать» Putty печатает все вводимые ключи / символы

Я использую Putty на моем ПК с Windows. Я заметил, что мои файлы журналов, созданные с использованием протокола Putty по умолчанию «Вывод для печати», будут регистрировать все нажатия клавиш, даже те, которые я удалил.

Например, если я хочу ввести abcd , но я набрал неправильно как abvd , и я дважды нажимаю Backspace, чтобы удалить vd , и повторно введите cd , файл журнала будет выводиться как abvdcd . Как мне исправить файл журнала, чтобы он отображал входные данные только после нажатия клавиши Enter, чтобы он правильно отображал abcd в файле журнала?

Примечание: Я не могу установить какое-либо внешнее программное обеспечение на моем ПК с Windows, так что, надеюсь, есть способ решить эту проблему в Windows. У меня тоже нет опыта программирования.

0
задан 20 October 2018 в 10:49
1 ответ

Не думаю, что вы должны видеть abvdcd -- на моем тестировании я получаю abvd cd.

Предположив, что SSH (для чего большинство людей используют шпаклевку), вы не сможете. Он немедленно посылает каждый набранный символ на хост, а хост выполняет редактирование строки. Для этого примера:

  • вы набираете b c d. Putty посылает эти символы на хост, который помещает их в свой буфер и пересылает эхом обратно на Putty, которая показывает их на экране и записывает в журнал.

  • вы набираете два обратных пробела. Putty посылает эти символы на хост, который удаляет два символа из буфера; для каждого из них он (условно?) эхом возвращает обратное пространство, и когда Putty помещает эту последовательность на свой экран, это приводит к визуальному эффекту стирания этих двух символов и оставляет курсор там, где был первый, т.е. после 'ab'. Putty также записывает в журнал в соответствии с настройками; если у вас есть 'весь вывод' и вы смотрите на файл с помощью инструмента, который отображает невидимые символы управления, вы должны увидеть всю последовательность, но 'вывод на печать' только записывает пробел.

    Возможно, вы используете хост, который использует какой-то другой метод отображения эффекта обратного пробела, например, стирание обратного пробела с помощью строки стирания или таблицы стирания обратного пробела(1).

  • Вы вводите c d; Putty посылает их на хост, который добавляет их в свой буфер, и пересылает эхом на Putty, который отображает и регистрирует их.

  • Вы вводите return и Putty посылает их на хост, который пересылает эхом на CR и LF, который отображает и регистрирует Putty. Хост также обрабатывает входной буфер в его нынешнем виде ('abcd'), что, вероятно, приводит к некоторому выводу.

Как вы можете видеть, все эти символы (a b v d [BS] SP [BS] [BS] SP [BS] c d CR LF) на самом деле пришли с хоста, и Путти не может отличить, что некоторые из них должны записываться в журнал, а некоторые - нет. Если вы используете линейное убийство на Unix (обычно ^U), по крайней мере, на моем CentOS, он эхом (и журналы) несколько пробелов по мере необходимости, то erase-rest-of-line (это ESCape [ K, где последовательность ESC [ также называется CSI Command Sequence Introducer).

Если вы регистрируетесь со 'всеми' и у вас есть Unix или Unix-подобные утилиты, вы можете запустить файл через col -b плюс что-то вроде sed 's/\x1b\[[0-9]*[A-Z]//', если необходимо, чтобы получить 'конечный отображаемый результат'. Это также исправит любой (другой) вывод на хост, который пытается использовать переопределение, как это делали некоторые вещи вроде man и nroff, и десятилетия назад на печатных терминалах часто хорошо работал.

Если вы используете Telnet, который также поддерживается Putty, но большинство хостов больше не поддерживают, так как он небезопасен, то этот протокол по умолчанию ведет себя так же, но у него есть / для редактирования строки, которое должно быть сделано на клиенте перед отправкой. Я не могу сказать, поддерживает ли Putty эту опцию, и что если хосты все еще поддерживают -- IME он был популярен в основном на 'больших железных' мэйнфреймах типа IBM Univac GE, которые сегодня практически никто не использует напрямую.

.
1
ответ дан 4 December 2019 в 15:49

Теги

Похожие вопросы