PuTTY вставляет случайные символы во время сеанса


26

Недавно я начал арендовать место на удаленном сервере, чтобы я мог работать над проектом. Я обнаружил, что относительно безболезненный способ получить доступ к нему на Windows-машине через PuTTY. Тем не менее, есть одна вещь, которая всегда раздражала меня при ее использовании: по-видимому, без причины случайные символы иногда вставляются в курсор.

В большинстве случаев это всего лишь одна тильда, но редко она выплевывает то, что похоже на некоторую escape-последовательность ([[^ 8 или подобное). Это произойдет только тогда, когда я сфокусирован на окне, печатаю ли я или на расстоянии 20 футов от клавиатуры. Если оставить его достаточно долго, он будет плевать тильды через случайные интервалы (в среднем около 1 минуты).

Наконец, это поведение кажется несовместимым при запуске таких программ, как nano или интерфейс mysql: в nano вместо вставки тильд он будет устанавливать метки (ctrl- ^); в mysql строки станут недоступны для редактирования.

У меня такой вопрос: кто-нибудь еще испытывал подобное поведение в PuTTY? И если так, что можно сделать, чтобы предотвратить / исправить это поведение?


Ваш компьютер также делает это, если вы оставляете случайной программу на своем хосте на несколько часов, например, блокнот?
cutrightjm

@ekaj Нет, только в PuTTY. И совершенно очевидно, что программы на основе PuTTY, такие как MobaXterm (я скачал для тестирования портативную версию), РЕДАКТИРОВАТЬ: только во время сеанса SSH в Мобе
Захария Поликарпуса

Хм. Вы уверены, что это не очень близко к периодическому, как всегда 55-65 секунд, пока шпаклевка полностью простаивает? Если это так, это может быть «поддержание активности», либо со стороны сервера, либо, возможно, замазка. Взгляните на вещи, найденные при поиске «живой» в справке по замазке Может быть, они будут полезны: superuser.com/questions/94436/… unix.stackexchange.com/questions/6105/…
mgkrebbs

@mgkrebbs Иногда это кажется периодическим, но иногда это не происходит в течение приблизительно 5-6 минут, затем вернитесь к кажущемуся периодическому. Что касается идеи поддержания активности, то в этом случае она кажется изолированной на стороне клиента, потому что, если я запускаю ssh-сессию с машины linux в нативном терминале, все хорошо. Я увидел эту первую ссылку, когда задавал вопрос, и попытался изменить тип терминала на «linux», но это, похоже, не имело заметного значения.
Захария Поликарпуса

Я тоже столкнулся с этой проблемой. Это появляется, когда я использую Putty, Kitty и даже MobaXterm.
Аттила

Ответы:


30

У меня была та же проблема с PuTTY, и я обнаружил, что это вызвано приложением, которое я назвал «кофеин», которое эффективно нажимает клавишу F13 каждую минуту, чтобы остановить активацию заставки (групповые политики не позволяют мне изменить время ожидания заставки на моя машина). Отключение приложения решило проблему.


2
У меня действительно был установлен кофеин в то время! Теперь все имеет смысл ... Спасибо, Брюс!
Захария Поликарпуса

3
Я должен был заподозрить это. Убийство Кофеин сделал свое дело. PS: Смотрите мое решение ниже, чтобы кофеин и замазка работали вместе
shreyansp

У меня было приложение для вывесок, которое делало то же самое. Некоторые [28 ~ появились в Терминале.
Любопытный разум

12

Если вы предпочитаете использовать замазку и кофеин, выполните следующие действия:

  1. Стоп Кофеин
  2. Проверьте Cafeine readme.txt для имитируемого ключа по умолчанию - мой был F15
  3. Войдите в свой удаленный терминал через Putty
  4. Начните кофеин (Совет: начинайте кофеин с короткого интервала, например, 3 секунды).
  5. Сделайте акцент на замазке.
  6. На вашем Баш командной строке нажмите Ctrl+V(Это необходимо , чтобы получить специальный код для ключа. , Например , попытайтесь Ctrl+Vзатем F12)
  7. Подождите, пока кофеин имитирует ключ
  8. Ключевой код будет отображаться в командной строке (например , F15есть ^[[28~, где ^[есть побег). Стоп Кофеин
  9. Теперь вы можете связать этот ключ с пустым, чтобы, когда кофеин имитировал его, он не печатал ~
    • редактировать ~/.inputrc(создать новый файл, если он не существует)
    • добавить строку "\e[28~":""
  10. Начать кофеин
  11. Перезапустите сеанс терминала
    • ~При использовании терминала Putty с этим сервером Linux больше не должно быть никаких случайностей.

+1. Я подробно остановился на этом ответе ниже (с объяснением того, почему этот вопрос не был для меня оптимальным) :)
Петру Захария,

7

Я нашел решение shreyansp наиболее (но не вполне) удовлетворительным :)
Вот моя попытка улучшить его (конечно же, YMMV). Надеюсь, что это может быть полезно для тех, кто ищет решение :)

Мое решение ведет себя следующим образом:

  • кофеин отправляет в Windows соответствующий код виртуального ключа, который:
    • предотвращает переход Windows в режим сна или в режим ожидания
    • в противном случае не генерирует никаких побочных эффектов в Windows ни в одиночку, ни в комбинации (без Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10 и т. д.)
    • либо не отправляется в Putty, либо игнорируется

TL; DR: мое решение применяется между шагами 2 и 3 (см. Ниже) с параметром -key:0Eкофеина:
выйдите из кофеина и перезапустите его с помощью:
caffeine.exe 5 -key:0E(для простого тестирования)
caffeine.exe 50 -key:0E(для обязательной заставки, установленной на 1 минуту)

  • Запустите readпрограмму на удаленном хосте и следите за тем, как не принимаются нажатия клавиш каждые 5 или 50 секунд.
  • Выход readсCtrl+C

Шреянсп предложил решение, в котором исправление будет применено между шагами 5 и 10 (см. Ниже).
Побочным эффектом этого (на моем конфиге) было то, что при каждом нажатии клавиши эта замазка пересылалась с кофеина на удаленный хост:

  • он вызвал «Сбросить полосу прокрутки при нажатии клавиш» (настройка на странице «Замазка / окно»),
    которую я обычно хотел бы, но только когда я (человек) нажимаю клавишу, но не регулярно кофеином :)
  • переведенная версия readline / bash (from '"\e[28~"'to '""'(пустой ключ?) привела к зависанию взаимодействия удаленного сеанса на несколько секунд

Чтобы легко проверить вышеупомянутое, выйдите из Caffeine и перезапустите его с 5-секундным интервалом и кодом виртуального ключа 07:
caffeine.exe 5 -key:07

  • Запустите readпрограмму на удаленном хосте и наблюдайте, как нажатия клавиш принимаются каждые 5 или 50 секунд.
  • Выход readсCtrl+C

Клавиша «трубопровод», насколько я понимаю:

  1. Кофеин отправляет код виртуального ключа в Windows
  2. Windows отправляет этот код виртуального ключа в Putty
  3. Putty выполняет некоторые «переводы» / «отображения» на основе некоторых настроек сеанса в:
    • Терминал/*
    • Окно/*
  4. Putty отправляет «переведенный» / «сопоставленный» код ключа на удаленный хост
  5. На удаленном хосте, «терминал» программа (например: $TERM=xterm, vt100, vt102, vt220и т.д.) переводится из «протокола линии» в ключевые коды.
  6. библиотека readline делает несколько переводов / отображений на основе ~/.inputrc
  7. readline отправляет код ключа в bash
  8. bash делает некоторые переводы / отображения на основе ~/.bashrc(на основе встроенной команды bind)
  9. bash или readline (не уверен, какой именно) отправляет переведенный ключевой код в nano (мой текстовый редактор)
  10. Этот конвейер может стать еще длиннее, если добавить screenпрограмму (которая включает в себя $TERM=screenэтап 5 и снова выполнить цикл на этапах 6–10).

Примечание. После перехода к шагу 4. становится очень трудно точно контролировать различные уровни «переводов» / «отображений». Я бы порекомендовал избегать этого, если вы можете.


Предыстория:
я caffeine.exe -key:07годами пользовался, прежде чем иметь дело с pfsense 2.3.3-RELEASE-p1 (основан на FreeBSD 10.3-RELEASE).
Затем caffeine.exe -key:07был получен на другой стороне как ^[[28~... который, кажется, сопоставлен с Ctrl+^(Set Mark) в Nano.
Это было довольно неприятно (представьте, что кто-то нажимает и удерживает клавишу Shift, когда вы перемещаете текстовую рамку в Блокноте).

Раньше я делал многочисленные настройки в Putty Настройки, ~/.tcshrc, ~/.inputrc, ~/.bashrc, ~/.nanorc, ~/.screenrcчтобы получить то , что я считаю базовую функциональность ( Backspace, Delete, Home, End, PgUp, PgDown, Ctrl+Left, Ctrl+Right, Numpad 0-9, Numpad ./*-+) работает последовательно между Баш / нано / экран.

Как только я обнаружил эту caffeine.exe -key:07«ошибку», я не захотел повторять это снова :)


Протестировано на:
Windows 8.1 64-bit Enterprise (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (на основе FreeBSD 10.3-RELEASE) / bash 4.4.12-release / nano 2.7.3 / screen 4.04. 00


Ссылки:


1

Это действительно выглядит как escape-последовательность или управляющий символ, который может объяснить, почему вы не видите ее в других программах, таких как блокнот.

Я не совсем уверен, какие клавиши нужно нажимать, чтобы получить этот вывод, но я немного поиграюсь и попытаюсь выяснить. Можете ли вы назвать любую другую показанную последовательность? Поведение mysql и nano может быть просто еще одной интерпретацией escape-последовательностей, которые, кажется, вводятся.

Наконец, вопрос в том, что вызывает эти ключевые входные данные. Вы случайно не используете ноутбук, который, например, автоматически управляет подсветкой с помощью какого-то проприетарного программного обеспечения? Я видел какое-то странное предустановленное программное обеспечение, которое эмулирует нажатия клавиш вместо использования API. Возможно, вы захотите использовать что-то вроде inputlog для себя.


С тех пор я изменил операционные системы, сначала изменив мой двойной Win-8.1 и Ubuntu только на Ubuntu, затем на Mint и, наконец, на Arch. Я не сталкивался с подобными проблемами, и это заставляет меня думать, что проблема была изолирована от способа взаимодействия Windows с PuTTY. Что касается причины ключевых входных данных, я не удивлюсь, если вы предложите, но я не использовал и не заметил какого-либо автоматического управления оборудованием. Если бы у меня все еще были эти журналы, я бы опубликовал их. РЕДАКТИРОВАТЬ: Если кто-то еще испытывает это, я призываю вас опубликовать эту информацию.
Захария Поликарпуса

См. Также ответ Жиля в разделе « Почему Putty вставляет ~ в мою оболочку Fedora bash» , в котором хорошо объясняется, почему можно увидеть ~(и услышать биб) только когда действительно \e[3~отправлено что-то подобное .
Арджан

(В качестве отступления: вы, возможно, захотите дать ссылку на этот пост, так как сначала я подумал, что просмотр одного не~ будет указывать на escape-последовательность.)
Arjan

1

Я использую опцию -key: 07 в командной строке, чтобы запустить кофеин. Кажется, чтобы решить проблему Putty.

Просто поместите это в файл летучей мыши

caffeine.exe -ключ: 07


Я использую 'caffiene.exe -key: 07', и он хорошо мне служил годами. Однако после подключения к моему pfSense (на основе FreeBSD) он получен с другой стороны как ^ [[28 ~ ..., который, по-видимому, сопоставлен с Ctrl + ^ (Set Mark) в Nano. Это довольно раздражает (представьте, что кто-то нажимает и удерживает клавишу Shift, когда вы перемещаете текстовую рамку в Блокноте). :) Я либо найду другой ключ на стороне кофеина, либо сделаю собственное отображение на стороне FreeBSD. (см. defs @ msdn.microsoft.com/en-us/library/windows/desktop/… )
Петру Захария,

Переключился на caffeine.exe -key:0E(см. Мой ответ ниже). Кажется, хорошо работает с Windows (8.1 64-разрядная версия), и Putty радостно игнорирует это :)
Petru Zaharia

0

Кто-то на форумах Cisco предлагает изменить параметр скорости консоли, чтобы решить эту проблему.

http://www.dslreports.com/forum/r27090677-HELP-Cisco-1800-garbled-output-in-putty

Вы определенно перепробовали все варианты скорости консоли в Putty, как упомянуто в 1 ?

Примечание. Если скорость передачи данных отличается от скорости по умолчанию, в CLI отображаются нечетные символы. Проверьте таблицу 1, чтобы установить скорость передачи для различных значений Confreg.


1
Консольные скорости для последовательных соединений. Он имеет в виду соединение SSH. Хотя у SSH есть настройка «Terminal Speed» ... Я никогда не видел, чтобы это вызывало проблему.
Джаред

0

У меня тоже была такая же проблема, и я обнаружил, что проблема действительно в caffeine.exe. Сначала я думал, что это не может быть вызвано caffeine.exe, потому что я использовал это в течение 2 лет на моем старом ноутбуке. Вместо этого я попытался изменить caffeine.exe -useshift, но это послало ^ C. Нашел другую программу, Mouse Jiggler, которая хранит экранную заставку, но больше не отправляет последовательности Escape в моих сессиях Putty.


0

Лучшее решение - настроить параметры сеанса замазки, чтобы Caffine не мешал ему.

В Putty под Terminal Keyboard выберите опцию SCO. В Putty под Terminal Bell измените действие на None (чтобы отключить перезвон).

Кофеин все равно сделает это и не будет беспокоить вас. (Я не использую клавиши Fn во время сеанса замазки, поэтому я не знаю, что произойдет, если вы захотите использовать клавиши Fn).


0

2017-09-20: Решена инъекция угля, запустив кофеин с помощью «caffeine.exe -useshift -noicon» в планировщике задач, который запускается при входе в систему. Нет иконки, больше не вводятся символы в моих сеансах mint / bash. Это было так сильно раздражает. Спасибо всем за ваши советы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.