PuTTY вставляє випадкових символів під час сеансу


26

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

Більшу частину часу це лише один тильд, але рідко він випльовує те, що схоже на певну послідовність втечі ([[^ 8 тощо). Це відбудеться лише тоді, коли я зосереджений у вікні, чи я набираю текст, чи за 20 футів від клавіатури. Якщо залишити його досить довго, він буде плювати тильди з випадковими інтервалами (в середньому близько 1 хвилини).

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

Моє запитання таке: чи відчував хтось подібну поведінку в PuTTY? І якщо так, то що можна зробити, щоб запобігти / виправити таку поведінку?


Чи робить це ваш комп’ютер, якщо ви залишаєте на своєму хості відкриту випадкову програму на кілька годин, як-от блокнот?
cutrightjm

@ekaj Ні, лише в PuTTY. І такі програми на основі PuTTY, як MobaXterm (я завантажив тестову портативну версію) EDIT: лише під час сеансу 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: Дивіться моє рішення нижче про те, щоб кофеїн і Putty працювали разом
shreyansp

У мене був додаток для вивісок, який робив те саме. Деякі [28 ~ з'явилися на Терміналі.
Цікавий розум

12

Якщо ви віддаєте перевагу запуску Putty і кофеїну, виконайте наступні дії:

  1. Припиніть кофеїн
  2. Перевірте кофеїн readme.txt на наявність модельованого за замовчуванням ключа - мій був F15
  3. Увійдіть до віддаленого терміналу через Putty
  4. Запустіть кофеїн (Порада: запускайте кофеїн з коротким інтервалом, наприклад, 3 секунди).
  5. Переведіть фокус на сеанс Putty.
  6. У командному рядку bash натисніть 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, або ігнорується 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 перекладена його версія (від '"\e[28~"'до '""'(порожній ключ?)) спричинила зависання взаємодії віддаленого сеансу протягом декількох секунд

Щоб легко перевірити вищесказане, вийдіть з кофеїну та повторно запустіть його з інтервалом у 5 секунд та кодом Virtual-Key 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 посилає Ключ-код на баш
  8. bash робить деякі переклади / відображення на основі ~/.bashrc(на основі вбудованої команди прив'язки)
  9. bash або readline (не впевнений, який саме) надсилає перекладений код коду нано (мій текстовий редактор)
  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+^(Намітити Марк) у Нано.
Це було дуже дратує (уявіть, що хтось натискає та утримує клавішу 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-розрядне підприємство (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (на основі FreeBSD 10.3-RELEASE) / bash 4.4.12-реліз / nano 2.7.3 / екран 4.04. 00


Список літератури:


1

Це дійсно схоже на послідовність втечі або контрольний символ, що може пояснити, чому ви не бачите цього в інших програмах, таких як блокнот.

Я не зовсім впевнений, які клавіші потрібно натиснути, щоб отримати цей вихід, але я трохи пограю і спробую це з'ясувати. Чи можете ви назвати будь-яку іншу показану послідовність? Поведінка mysql та nano може бути просто іншою інтерпретацією послідовностей втечі, які, здається, входять.

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


З тих пір я змінив операційні системи, спочатку змінивши свій подвійний Win-8.1 & Ubuntu тільки на Ubuntu, потім на Mint і, нарешті, на Arch. У мене не виникло жодних подібних проблем, що призводить мене до думки, що проблема була виокремлена у спосіб взаємодії Windows з PuTTY. Що стосується причини введення ключових даних, я би не здивувався, якби те, що ви запропонували, було таким, однак я не використовував і не помічав будь-якого автоматичного апаратного управління. Якби я ще мав ці журнали, я б розмістив їх. EDIT: Якщо хтось із цим відчуває, я рекомендую розмістити цю інформацію.
Захарій Полікарпус

Дивіться також відповідь Гілла в « Чому Putty вставляє ~ в мою оболонку Fedora» , яка добре пояснює, чому можна бачити ~(і чути бджілку) лише тоді, коли насправді щось \e[3~надсилається.
Ар'ян

(До речі , ви можете посилання на цей пост, так як я спочатку подумав , побачивши один ~б НЕ вказати послідовність евакуації.)
Арьян

1

Я використовую опцію -key: 07 у командному рядку, щоб запустити caffiene. Здається, щоб зупинити проблему Putty.

Просто помістіть це у файл bat

caffeine.exe -key: 07


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

Переключено на 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 встановлено "Термінальна швидкість" ... Я ніколи не бачив, щоб це спричинило проблеми.
Джаред

0

У мене також була та сама проблема, і я виявив, що caffeine.exe справді була проблемою. Спочатку я подумав, що це не може бути викликано caffeine.exe, оскільки я використовував це протягом 2+ років на своєму старому ноутбуці. Я спробував замість цього змінити caffeine.exe -useshift, але це послало ^ C. Знайшов іншу програму, миша Jiggler, яка не дозволяє зберігати екрани, але більше не надсилає послідовностей Escape на моїх сеансах Putty.


0

Кращим рішенням є налаштування параметрів на вашому сеансі шпаклівки, щоб Caffine не заважав йому.

У Putty під термінальною клавіатурою виберіть параметр SCO. У Putty під терміналом Bell змініть дію на None (щоб вимкнути звук).

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


0

2017-09-20: Вирішили ін'єкцію цукру, запустивши кофеїн із «caffeine.exe -useshift -noicon» у планувальнику завдань, що запускається при вході. Жодної піктограми, більше не вводили символів у моїх сеансах м'яти / башти. Це було так сильно дратує. Дякуємо всім за підказки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.