PuTTY insère des caractères aléatoires pendant une session

26

J'ai récemment commencé à louer de l'espace sur un serveur distant pour pouvoir travailler sur un projet. J'ai trouvé qu'un moyen relativement indolore d'y accéder sur une machine Windows est via PuTTY. Cependant, il y a une chose qui m'a toujours contrarié lors de son utilisation: pour apparemment aucune raison, des caractères aléatoires sont parfois insérés au niveau du curseur.

La plupart du temps, ce n'est qu'un tilde unique, mais il crache rarement ce qui ressemble à une séquence d'échappement ([[^ 8 ou similaire). Cela ne se produira que lorsque je serai concentré sur la fenêtre, que je tape ou à 20 pieds du clavier. S'il est laissé assez longtemps, il crachera des tildes à intervalles aléatoires (la moyenne est d'environ 1 minute).

Enfin, ce comportement semble incohérent lors de l'exécution de programmes tels que nano ou l'interface mysql: dans nano, au lieu d'insérer des tildes, il mettra des repères (ctrl- ^); dans mysql, les lignes deviendront non modifiables.

Ma question est la suivante: quelqu'un d'autre a-t-il connu ce genre de comportement dans PuTTY? Et si oui, que peut-on faire pour empêcher / corriger ce comportement?

Zachary Polikarpus
la source
Votre ordinateur le fait-il également si vous laissez ouvert un programme aléatoire sur votre hôte pendant quelques heures, comme un bloc-notes?
cutrightjm
@ekaj Non, uniquement dans PuTTY. Et des programmes basés sur PuTTY comme MobaXterm (j'ai téléchargé la version portable pour tester) EDIT: uniquement pendant une session SSH à Moba
Zachary Polikarpus
Hmm. Êtes-vous sûr que ce n'est pas assez proche du périodique, comme toujours 55-65 secondes alors que le mastic est entièrement inactif? Si tel est le cas, il peut s'agir d'une activité de "maintien en vie", du côté serveur ou peut-être du mastic. Jetez un oeil aux choses trouvées sous une recherche "vivant" dans l'aide au mastic. Peut-être que ceux-ci seront utiles: superuser.com/questions/94436/… unix.stackexchange.com/questions/6105/…
mgkrebbs
@mgkrebbs Parfois, cela semble périodique, mais cela ne se produit pas de temps en temps pendant environ 5 à 6 minutes, puis revenez tout de suite à une apparence périodique. Concernant l'idée de garder en vie, si tel est le cas, elle semble être isolée côté client car si je démarre une session ssh à partir d'une machine linux en terminal natif, tout va bien. J'ai vu ce premier lien lorsque je posais la question et j'ai essayé de changer le type de terminal en "linux", mais cela ne semble pas faire de différence notable.
Zachary Polikarpus
J'ai également rencontré ce problème. Il apparaît lorsque j'utilise Putty, Kitty et même MobaXterm.
Attilah

Réponses:

30

J'ai eu le même problème avec PuTTY et j'ai découvert que cela était dû à une application que j'ai appelée "caféine" qui appuie efficacement sur la touche F13 toutes les minutes pour empêcher l'économiseur d'écran d'être activé (les stratégies de groupe m'empêchent de modifier le délai d'expiration de l'économiseur d'écran sur ma machine). La désactivation de l'application m'a résolu le problème.

Bruce
la source
2
J'ai fait installer de la caféine à l'époque! Tout cela a du sens maintenant ... Merci Bruce!
Zachary Polikarpus
3
Doh, j'aurais dû soupçonner ça. Tuer la caféine a fait l'affaire. PS: Voir ma solution ci-dessous pour que la caféine et le mastic travaillent ensemble
shreyansp
J'avais une application de signalisation qui faisait de même. Certains [28 ~ sont apparus sur le terminal.
Curious Mind
12

Si vous préférez faire tourner Putty and Caffeine, suivez ces étapes:

  1. Arrêtez la caféine
  2. Vérifiez le fichier readme.txt de caféine pour la clé par défaut simulée - la mienne était F15
  3. Connectez-vous à votre terminal distant via Putty
  4. Commencez la caféine (Astuce: démarrez la caféine avec un intervalle court, par exemple 3 secondes).
  5. Concentrez-vous sur la session Putty.
  6. À l'invite de commande bash, appuyez sur Ctrl+V(ceci est nécessaire pour obtenir le code spécial pour la clé. Par exemple, essayez Ctrl+Vsuivi de F12)
  7. Attendez que la caféine simule la clé
  8. Le code clé sera affiché sur la ligne de commande (par exemple, F15est ^[[28~, où ^[est d'échappement). Arrêtez la caféine
  9. Maintenant, vous pouvez lier cette clé à blanc afin que lorsque la caféine la simule, elle ne tape pas ~
    • modifier ~/.inputrc(créer un nouveau fichier s'il n'existe pas)
    • ajouter la ligne "\e[28~":""
  10. Commencez la caféine
  11. Redémarrez votre session de terminal
    • Il ne devrait plus y avoir de hasard ~lors de l'utilisation du terminal Putty avec ce serveur Linux
shreyansp
la source
+1. J'ai développé cette réponse ci-dessous (avec une explication sur pourquoi ce n'était pas la réponse optimale pour moi) :)
Petru Zaharia
7

J'ai trouvé que la solution de shreyansp était la plus (mais pas tout à fait) satisfaisante :)
Voici ma tentative pour améliorer cela (bien sûr YMMV). J'espère que cela peut être utile à ceux qui recherchent une solution :)

Ma solution se comporte comme suit:

  • la caféine envoie à Windows un code de clé virtuelle approprié qui:
    • empêche Windows de se mettre en veille ou inactif
    • ne génère autrement aucun effet secondaire sur Windows ni seul ni en combinaison (pas de Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10, etc.)
    • soit n'est pas envoyé à Putty ou est ignoré par Putty

TL; DR: Ma solution est appliquée entre les étapes 2 et 3 (voir ci-dessous) avec le -key:0Eparamètre caféine:
Quittez la caféine et relancez-la avec:
caffeine.exe 5 -key:0E(pour un test facile)
caffeine.exe 50 -key:0E(pour un économiseur d'écran obligatoire réglé à 1 minute)

  • Lancez le readprogramme sur l'hôte distant et regardez comment aucune frappe n'est reçue toutes les 5 ou 50 secondes.
  • Sortez readavecCtrl+C

Shreyansp a proposé une solution où un correctif serait appliqué entre les étapes 5 et 10 (voir ci-dessous).
L'effet secondaire de cela (sur ma configuration) était que, à chaque frappe de touche, ce mastic transmis de la caféine à l'hôte distant:

  • cela a déclenché une 'Réinitialisation de la barre de défilement sur la touche' (réglage sur la page Putty / Window)
    que je voudrais normalement, mais seulement lorsque j'appelle la touche humaine (mais pas régulièrement) avec de la caféine :)
  • readline / bash traduit de celui-ci (de '"\e[28~"'à '""'(clé vide?) a provoqué le blocage de l'interaction de session à distance pendant plusieurs secondes

Afin de tester facilement ce qui précède, quittez la caféine et relancez-la avec un intervalle de 5 secondes et le code de clé virtuelle 07:
caffeine.exe 5 -key:07

  • Lancez le readprogramme sur l'hôte distant et regardez comment les frappes sont reçues toutes les 5 ou 50 secondes.
  • Sortez readavecCtrl+C

Le «pipeline» de touches, si je comprends bien:

  1. La caféine envoie un code de clé virtuelle à Windows
  2. Windows envoie ce code de clé virtuelle à Putty
  3. Putty fait des «traductions» / «mappages» basés sur certains paramètres de session dans:
    • Terminal/*
    • Fenêtre/*
  4. Putty envoie le code de clé «traduit» / «mappé» à l'hôte distant
  5. Sur l'hôte distant, le programme « terminal » (par exemple: $TERM=xterm, vt100, vt102, vt220, etc.) se traduit par du « protocole de ligne » dans les codes clés.
  6. la bibliothèque readline fait des traductions / mappages basés sur ~/.inputrc
  7. readline envoie le code clé à bash
  8. bash fait des traductions / mappages basés sur ~/.bashrc(basé sur la commande bind intégrée)
  9. bash ou readline (je ne sais pas lequel) envoie le code clé traduit à nano (mon éditeur de texte)
  10. Ce pipeline peut devenir encore plus long en ajoutant le screenprogramme (qui comprend un $TERM=screenpour l'étape 5. et revient en boucle à l'étape 6. à 10.)

Remarque: Une fois arrivé à l'étape 4., il devient très difficile de contrôler avec précision les différentes couches de «traductions» / «mappages». Je recommanderais d'éviter cela si vous le pouvez.


Contexte:
J'ai utilisé caffeine.exe -key:07pendant des années avant de devoir gérer un pfsense 2.3.3-RELEASE-p1 (basé sur FreeBSD 10.3-RELEASE).
Ensuite, a caffeine.exe -key:07été reçu de l'autre côté comme ^[[28~... qui semble être mappé à Ctrl+^(Set Mark) dans Nano.
C'était assez ennuyeux (imaginez que quelqu'un appuie sur la touche Maj et la garde pendant que vous déplacez le curseur texte dans le Bloc-notes).

Auparavant, je l' ai fait de nombreuses personnalisations dans Putty Paramètres, ~/.tcshrc, ~/.inputrc, ~/.bashrc, ~/.nanorc, ~/.screenrcpour obtenir ce que je considère les fonctionnalités de base ( Backspace, Delete, Home, End, PgUp, PgDown, Ctrl+Left, Ctrl+Right, Numpad 0-9, Numpad ./*-+) travaillant régulièrement entre bash / nano / écran.

Une fois que j'ai découvert ce caffeine.exe -key:07`` bug '', je n'ai plus voulu le retracer :)


Testé sur:
Windows 8.1 64 bits Enterprise (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (basé sur FreeBSD 10.3-RELEASE) / bash 4.4.12-release / nano 2.7.3 / screen 4.04. 00


Les références:

Petru Zaharia
la source
1

Cela ressemble vraiment à une séquence d'échappement ou à un caractère de contrôle, ce qui pourrait expliquer pourquoi vous ne le voyez pas dans d'autres programmes comme le bloc-notes.

Je ne sais pas exactement quelles touches doivent être enfoncées pour obtenir cette sortie, mais je vais jouer un peu et essayer de le découvrir. Pouvez-vous nommer une autre séquence montrée? Le comportement de mysql et nano pourrait simplement être une autre interprétation des séquences d'échappement qui semblent être entrées.

Enfin, la question est de savoir ce qui cause ces entrées clés. Utilisez-vous, par hasard, un ordinateur portable qui, par exemple, contrôle automatiquement le rétro-éclairage à l'aide d'un logiciel propriétaire? J'ai vu des logiciels préinstallés étranges émuler les touches au lieu d'utiliser l'API. Vous voudrez peut-être utiliser quelque chose comme inputlog sur vous-même.

Patrick R.
la source
J'ai depuis changé de système d'exploitation, en changeant d'abord mon double Win-8.1 et Ubuntu en Ubuntu uniquement, puis en Mint et enfin en Arch. Je n'ai pas rencontré de problèmes similaires, ce qui m'amène à croire que le problème était isolé de la manière dont Windows interagissait avec PuTTY. Quant à la cause des entrées clés, je ne serais pas surpris si ce que vous proposiez était le cas, mais je n'ai pas utilisé ou remarqué aucune sorte de contrôle automatique du matériel. Si j'avais encore ces journaux, je les publierais. EDIT: Si quelqu'un d'autre vit cela, je vous encourage à publier ces informations.
Zachary Polikarpus
Voir aussi la réponse de Gilles dans Why Putty en insérant ~ dans mon shell bash Fedora , ce qui explique bien pourquoi on ne peut voir le ~(et entendre un beeb) que lorsque quelque chose comme \e[3~est envoyé.
Arjan
(En aparté: vous pouvez créer un lien vers ce poste, au début , je figurés voir un seul ~serait pas indiquer une séquence d'échappement.)
Arjan
1

J'utilise l'option -key: 07 sur la ligne de commande pour lancer caffiene .. Semble arrêter le problème Putty.

Il suffit de mettre cela dans un fichier bat

caffeine.exe -key: 07

WorsleyBaz
la source
J'utilise aussi 'caffiene.exe -key: 07' car cela m'a bien servi pendant des années. Cependant, depuis la connexion à mon pfSense (basé sur FreeBSD), cela est reçu de l'autre côté sous la forme ^ [[28 ~ ... qui semble être mappé sur Ctrl + ^ (Set Mark) dans Nano. C'est assez ennuyeux (imaginez que quelqu'un appuie sur la touche Maj et la garde tout en déplaçant le curseur texte dans le Bloc-notes). :) Je vais devoir soit trouver une autre clé côté caféine, soit faire un mappage personnalisé côté FreeBSD. (voir defs @ msdn.microsoft.com/en-us/library/windows/desktop/… )
Petru Zaharia
Passé à caffeine.exe -key:0E(voir ma réponse ci-dessous). Semble bien fonctionner avec Windows (8.1 64 bits) et Putty l'ignore avec bonheur :)
Petru Zaharia
0

Quelqu'un sur les forums Cisco suggère de modifier le paramètre de vitesse de la console pour résoudre ce problème.

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

Vous avez définitivement essayé toutes les variations de vitesse de la console dans Putty comme mentionné dans 1 ?

Remarque: Si le débit en bauds est différent du débit par défaut, des caractères impairs sont visibles sur CLI. Vérifier le tableau 1 pour définir les débits en bauds pour différentes valeurs Confreg.

Montag451
la source
1
Les vitesses de la console correspondent aux connexions série. Il fait référence à une connexion SSH. Bien que SSH ait un paramètre "Vitesse du terminal" ... Je n'ai jamais vu cela causer de problème.
Jared
0

J'ai également eu le même problème et j'ai trouvé que caffeine.exe était bien le problème. Au début, je pensais que cela ne pouvait pas être causé par caffeine.exe car j'utilisais cela depuis plus de 2 ans sur mon ancien ordinateur portable. J'ai plutôt essayé de changer caffeine.exe -useshift, mais cela a envoyé ^ C. J'ai trouvé un autre programme, Mouse Jiggler, qui éloigne l'économiseur d'écran mais n'envoie plus de séquences d'échappement dans mes sessions Putty.

user332804
la source
0

La meilleure solution consiste à configurer les paramètres de votre session de mastic de sorte que Caffine n'interfère pas avec elle.

Dans Putty sous Terminal Keyboard, choisissez l'option SCO. Dans Putty sous Terminal Bell, changez l'action en None (pour désactiver le carillon).

Caffine fera toujours son truc et ne dérangera pas votre séance de mastic. (Je n'utilise pas de clés Fn pendant une session de mastic, donc je ne sais pas ce qui se passe si vous voulez utiliser des clés Fn).

TomH
la source
0

2017-09-20: Résolution de l'injection de char en démarrant la caféine avec «caffeine.exe -useshift -noicon» dans le planificateur de tâches déclenché à la connexion. Aucune icône, plus de caractères injectés dans mes sessions mintty / bash. C'était tellement ennuyeux. Merci à tous pour vos conseils.

Marc Verreault
la source