PuTTY fügt während einer Sitzung zufällige Zeichen ein

26

Ich habe kürzlich damit begonnen, Speicherplatz auf einem Remote-Server zu mieten, damit ich an einem Projekt arbeiten kann. Ich fand heraus, dass PuTTY eine relativ schmerzlose Möglichkeit ist, auf einem Windows-Computer darauf zuzugreifen. Eines hat mich bei der Verwendung jedoch immer geärgert: Es gibt scheinbar keinen Grund, warum gelegentlich zufällige Zeichen am Cursor eingefügt werden.

Meistens ist es nur eine einzelne Tilde, aber selten spuckt es etwas aus, das wie eine Escape-Sequenz aussieht ([[^ 8 oder ähnliches). Es wird nur auftreten, wenn ich auf das Fenster fokussiert bin, egal ob ich tippe oder 20 Fuß von der Tastatur entfernt bin. Wenn es lange genug belassen wird, spuckt es in zufälligen Abständen Tildes (der Durchschnitt liegt bei etwa 1 Minute).

Schließlich scheint dieses Verhalten inkonsistent zu sein, wenn Programme wie nano oder die mysql-Oberfläche ausgeführt werden: In nano werden anstelle des Einfügens von Tilden Markierungen gesetzt (Strg- ^). In MySQL können Zeilen nicht mehr bearbeitet werden.

Meine Frage lautet: Hat jemand anderes dieses Verhalten in PuTTY erlebt? Und wenn ja, was kann getan werden, um dieses Verhalten zu verhindern / zu korrigieren?

Zachary Polikarpus
quelle
Tut Ihr Computer dies auch, wenn Sie ein zufälliges Programm auf Ihrem Host für einige Stunden geöffnet lassen, wie z. B. Notepad?
Cutrightjm
@ekaj Nein, nur in PuTTY. Und aparantly PuTTY basierte Programme wie MobaXterm (heruntergeladen ich die portable Version Test) EDIT: nur während einer SSH - Sitzung in Moba
Zachary Polikarpus
Hmm. Sind Sie sicher, dass es nicht in der Nähe von periodischen, wie immer 55-65 Sekunden ist, während Kitt völlig im Leerlauf ist? Wenn dies der Fall ist, handelt es sich möglicherweise um eine "Keep-Alive" -Aktivität, entweder vom Server-Ende aus oder vielleicht um einen Kitt. Schauen Sie sich die Dinge an, die Sie unter "lebendig" in putty help gefunden haben. Vielleicht werden diese hilfreich sein: superuser.com/questions/94436/... unix.stackexchange.com/questions/6105/...
mgkrebbs
@mgkrebbs Manchmal scheint es periodisch zu sein, aber gelegentlich tritt es für etwa 5 bis 6 Minuten nicht auf, und dann kehren Sie direkt zu dem periodisch erscheinenden Zustand zurück. In Bezug auf die Keep-Alive-Idee, wenn dies der Fall ist, scheint es für den Client isoliert zu sein, denn wenn ich eine SSH-Sitzung von einem Linux-Computer im nativen Terminal starte, ist alles in Ordnung. Ich sah diesen ersten Link, als ich die Frage stellte, und versuchte, den Terminaltyp auf "Linux" zu ändern, aber das schien keinen merklichen Unterschied zu machen.
Zachary Polikarpus
Ich habe dieses Problem auch erlebt. Es zeigt sich, wenn ich Putty, Kitty und sogar MobaXterm verwende.
Attilah

Antworten:

30

Ich hatte das gleiche Problem mit PuTTY und stellte fest, dass es durch eine von mir als "Koffein" bezeichnete Anwendung verursacht wurde, die effektiv jede Minute die Taste F13 drückt, um die Aktivierung des Bildschirmschoners zu stoppen (Gruppenrichtlinien verhindern, dass ich das Zeitlimit für den Bildschirmschoner auf ändere) meine Maschine). Durch Deaktivieren der Anwendung wurde das Problem behoben.

Bruce
quelle
2
Ich hatte zu der Zeit Koffein installiert! Jetzt macht alles Sinn ... Danke Bruce!
Zachary Polikarpus
3
Doh, das hätte ich ahnen sollen. Koffein zu töten hat den Trick getan. PS: Siehe meine Lösung unten, damit Koffein und Kitt zusammenarbeiten
shreyansp
Ich hatte eine Beschilderungs-App, die dasselbe tat. Einige erschienen im Terminal.
Curious Mind
12

Wenn Sie Kitt und Koffein lieber laufen lassen möchten, gehen Sie folgendermaßen vor:

  1. Stoppen Sie Koffein
  2. Überprüfen Sie die Caffeine readme.txt für den simulierten Standardschlüssel - meiner war F15
  3. Melden Sie sich über Putty bei Ihrer Gegenstelle an
  4. Starten Sie Koffein (Tipp: Starten Sie Koffein mit einem kurzen Intervall von zB 3 Sekunden).
  5. Konzentrieren Sie sich auf die Putty-Sitzung.
  6. Drücken Sie an Ihrer Bash-Eingabeaufforderung Ctrl+V(Dies ist erforderlich, um den speziellen Code für den Schlüssel abzurufen. Beispiel: try, Ctrl+Vgefolgt von F12).
  7. Warten Sie, bis Coffein den Schlüssel simuliert hat
  8. Der Tastencode wird in der Befehlszeile angezeigt (z. B. F15ist ^[[28~, wo ^[sich ein Escape befindet). Stoppen Sie Koffein
  9. Jetzt können Sie diesen Schlüssel an ein leeres Feld binden, damit er bei der Coffein-Simulation nicht eingegeben wird ~
    • bearbeiten ~/.inputrc(neue Datei erstellen, falls nicht vorhanden)
    • füge die Zeile hinzu "\e[28~":""
  10. Starten Sie Koffein
  11. Starten Sie Ihre Terminalsitzung neu
    • Es sollte keinen Zufall mehr geben, ~wenn das Putty-Terminal mit diesem Linux-Server verwendet wird
shreyansp
quelle
+1. Ich habe auf diese Antwort unten erweitert (mit Erklärung, warum dies nicht die optimale Antwort für mich war) :)
Petru Zaharia
7

Ich fand die Lösung von shreyansp die (aber nicht ganz) befriedigendste :)
Hier ist mein Versuch, das zu verbessern (natürlich YMMV). Hoffe, dass dies für diejenigen von Nutzen sein kann, die nach einer Lösung suchen :)

Meine Lösung verhält sich wie folgt:

  • Koffein sendet an Windows einen entsprechenden Virtual-Key-Code, der:
    • verhindert, dass Windows in den Ruhezustand oder in den Ruhezustand wechselt
    • erzeugt sonst keine Nebenwirkungen unter Windows, weder alleine noch in Kombination (keine Strg-, Umschalt-, Alt-, Alt-Gr-, Win-, F1-F5-, F10- usw.)
    • Entweder wird nicht an Putty gesendet oder von Putty ignoriert

TL; DR: Meine Lösung wird zwischen den Schritten 2 und 3 (siehe unten) mit dem -key:0EKoffein-Parameter angewendet: Koffein beenden
und neu starten mit:
caffeine.exe 5 -key:0E(zum einfachen Testen)
caffeine.exe 50 -key:0E(für einen obligatorischen Bildschirmschoner, der auf 1 Minute eingestellt ist)

  • Starten Sie das readProgramm auf dem Remote-Host und beobachten Sie, wie alle 5 oder 50 Sekunden keine Tastenanschläge empfangen werden.
  • Beenden Sie readmitCtrl+C

Shreyansp schlug eine Lösung vor, bei der ein Fix zwischen den Schritten 5 und 10 angewendet wird (siehe unten).
Der Nebeneffekt davon (in meiner Konfiguration) war, dass bei jedem Tastendruck, den der Kitt von Koffein an den Remote-Host weiterleitete:

  • es löste eine "Bildlaufleiste bei Tastendruck zurücksetzen" (Einstellung auf Kitt- / Fensterseite) aus,
    die ich normalerweise möchte, aber nur, wenn ich (der Mensch) die Taste drücke, aber nicht regelmäßig durch Koffein :)
  • readline / bash übersetzte Version (von '"\e[28~"'nach '""'(leerer Schlüssel?)) ließ die Remote-Session-Interaktion für einige Sekunden hängen

Um dies einfach zu testen, beenden Sie Caffeine und starten Sie es mit einem Intervall von 5 Sekunden und Virtual-Key-Code 07 neu:
caffeine.exe 5 -key:07

  • Starten Sie das readProgramm auf dem Remote-Host und beobachten Sie, wie alle 5 oder 50 Sekunden Tastenanschläge empfangen werden.
  • Beenden Sie readmitCtrl+C

Der Tastenanschlag "Pipeline", wie ich es verstehe:

  1. Koffein sendet einen Virtual-Key-Code an Windows
  2. Windows sendet diesen Virtual-Key-Code an Putty
  3. Putty macht einige 'Übersetzungen' / 'Zuordnungen' basierend auf einigen Sitzungseinstellungen in:
    • Terminal/*
    • Fenster/*
  4. Putty sendet den übersetzten / zugeordneten Schlüsselcode an den Remote-Host
  5. Auf dem Remote - Host, das ‚Terminal‘ Programm (zB: $TERM=xterm, vt100, vt102, vt220, etc.) übersetzt aus dem ‚Leitungsprotokoll‘ in Tastencodes.
  6. Die Readline-Bibliothek führt einige Übersetzungen / Zuordnungen basierend auf ~/.inputrc
  7. readline sendet den Schlüsselcode an bash
  8. Bash macht einige Übersetzungen / Zuordnungen basierend auf ~/.bashrc(basierend auf dem eingebauten Bindebefehl)
  9. Bash oder Readline (nicht sicher, welche) sendet den übersetzten Schlüsselcode an nano (meinen Texteditor)
  10. Diese Pipeline kann noch länger werden, wenn Sie das screenProgramm hinzufügen (das ein $TERM=screenfür Schritt 5 enthält und bei Schritt 6 bis 10 wieder zurückspringt).

Hinweis: Sobald Sie Schritt 4 erreicht haben, ist es sehr schwierig, die verschiedenen Ebenen von "Übersetzungen" / "Zuordnungen" genau zu steuern. Ich würde empfehlen, dies zu vermeiden, wenn Sie können.


Hintergrund:
Ich habe caffeine.exe -key:07jahrelang verwendet, bevor ich mich mit einem Pfsense 2.3.3-RELEASE-p1 (basierend auf FreeBSD 10.3-RELEASE) auseinandersetzen musste.
Dann caffeine.exe -key:07wurde auf der anderen Seite als ^[[28~... empfangen, was auf Ctrl+^(Set Mark) in Nano abgebildet zu sein scheint .
Das war ziemlich ärgerlich (stellen Sie sich vor, jemand drückt die Umschalttaste und hält sie gedrückt, während Sie das Text-Caret im Editor verschieben).

Früher habe ich zahlreiche Anpassungen in Putty - Einstellungen haben, ~/.tcshrc, ~/.inputrc, ~/.bashrc, ~/.nanorc, ~/.screenrczu bekommen , was ich grundlegende Funktionen betrachten ( Backspace, Delete, Home, End, PgUp, PgDown, Ctrl+Left, Ctrl+Right, Numpad 0-9, Numpad ./*-+) arbeitet konsequent zwischen bash / Nano / Schirm.

Als ich diesen caffeine.exe -key:07'Bug' entdeckte, wollte ich das nicht noch einmal nachvollziehen :)


Getestet unter:
Windows 8.1 64-Bit Enterprise (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (basierend auf FreeBSD 10.3-RELEASE) / bash 4.4.12-release / nano 2.7.3 / screen 4.04. 00


Verweise:

Petru Zaharia
quelle
1

Dies sieht wirklich wie eine Escape-Sequenz oder ein Steuerzeichen aus, was möglicherweise erklärt, warum Sie es in anderen Programmen wie Notepad nicht sehen.

Ich bin nicht ganz sicher, welche Tasten gedrückt werden müssen, um diese Ausgabe zu erhalten, aber ich werde ein bisschen herumspielen und versuchen, es herauszufinden. Können Sie eine andere gezeigte Sequenz benennen? Das Verhalten von mysql und nano könnte nur eine andere Interpretation der Escape-Sequenzen sein, die scheinbar eingegeben werden.

Schließlich stellt sich die Frage, woher diese Tastatureingaben stammen. Verwenden Sie zufällig einen Laptop, der z. B. die Hintergrundbeleuchtung mithilfe einer proprietären Software automatisch steuert? Ich habe einige seltsame vorinstallierte Software gesehen, die die Tastendrücke emuliert, anstatt die API zu verwenden. Möglicherweise möchten Sie so etwas wie inputlog für sich selbst verwenden.

Patrick R.
quelle
Ich habe seitdem das Betriebssystem gewechselt. Zuerst habe ich mein duales Win-8.1 & Ubuntu auf Ubuntu umgestellt, dann auf Mint und schließlich auf Arch. Ich habe keine ähnlichen Probleme festgestellt, was mich zu der Annahme veranlasst, dass das Problem auf die Art und Weise beschränkt war, in der Windows mit PuTTY interagierte. Was die Ursache für die Tasteneingaben angeht, wäre ich nicht überrascht, wenn das, was Sie vorgeschlagen haben, der Fall wäre, aber ich habe keine automatische Hardware-Steuerung verwendet oder bemerkt. Wenn ich diese Protokolle noch hätte, würde ich sie posten. BEARBEITEN: Wenn jemand anderes dies erlebt, empfehle ich Ihnen, diese Informationen zu posten.
Zachary Polikarpus
Siehe auch Gilles 'Antwort in Warum Putty ~ in meine Fedora-Bash-Shell einfügt , was sehr gut erklärt, warum man den möglicherweise nur sieht ~(und einen Beeb hört), wenn tatsächlich so etwas \e[3~gesendet wird.
Arjan
(Übrigens: Vielleicht möchten Sie einen Link zu diesem Beitrag erstellen, da ich zunächst angenommen habe, dass ~das Anzeigen einer Single keine Fluchtsequenz anzeigt.)
Arjan,
1

Ich benutze die Option -key: 07 in der Kommandozeile, um caffiene zu starten. Scheint das Putty-Problem zu stoppen.

Legen Sie dies einfach in eine Fledermausdatei

caffeine.exe-Schlüssel: 07

WorsleyBaz
quelle
Ich benutze auch 'caffiene.exe -key: 07', was mir jahrelang sehr geholfen hat. Seit dem Herstellen einer Verbindung zu meinem pfSense (FreeBSD-basiert) wird dies jedoch auf der anderen Seite als ^ [[28 ~ ... empfangen, was in Nano auf Strg + ^ (Set Mark) abgebildet zu sein scheint. Das ist ziemlich ärgerlich (stellen Sie sich vor, jemand drückt die Umschalttaste und hält sie gedrückt, während Sie das Text-Caret im Editor bewegen). :) Ich werde entweder einen anderen Schlüssel auf der Koffeinseite finden oder ein benutzerdefiniertes Mapping auf der FreeBSD-Seite durchführen. (Siehe defs @ msdn.microsoft.com/en-us/library/windows/desktop/… )
Petru Zaharia
Umgestellt auf caffeine.exe -key:0E(siehe meine Antwort unten). Scheint gut mit Windows (8,1 64-Bit) zu funktionieren und Putty ignoriert es glücklich :)
Petru Zaharia
0

Jemand in Cisco-Foren schlägt vor, den Parameter für die Konsolengeschwindigkeit zu ändern, um dieses Problem zu beheben.

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

Sie haben definitiv alle Variationen der Konsolengeschwindigkeit in Putty ausprobiert, wie in 1 erwähnt ?

Hinweis: Wenn die Baudrate nicht der Standardrate entspricht, werden auf der CLI ungerade Zeichen angezeigt. Überprüfen Sie Tabelle1 , um die Baudraten für verschiedene Confreg-Werte festzulegen.

Montag451
quelle
1
Konsolengeschwindigkeiten gelten für serielle Verbindungen. Er bezieht sich auf eine SSH-Verbindung. Während SSH eine "Terminal Speed" -Einstellung hat ... Ich habe noch nie gesehen, dass dies ein Problem darstellt.
Jared
0

Ich hatte auch das gleiche Problem und fand, dass caffeine.exe tatsächlich das Problem war. Zuerst dachte ich, es könnte nicht durch caffeine.exe verursacht werden, da ich dies für mehr als 2 Jahre auf meinem alten Laptop verwendete. Ich habe versucht, caffeine.exe -useshift zu ändern, aber das hat ^ C gesendet. Ich habe ein anderes Programm gefunden, Mouse Jiggler, das den Bildschirmschoner fernhält, aber in meinen Putty-Sitzungen keine Escape-Sequenzen mehr sendet.

user332804
quelle
0

Die bessere Lösung ist, die Einstellungen in Ihrer Kitt-Sitzung so zu konfigurieren, dass Caffine sie nicht beeinträchtigt.

Wählen Sie in Putty unter Terminal Keyboard die Option SCO. Ändern Sie in Putty unter Terminal Bell die Aktion in None (um das Glockenspiel auszuschalten).

Caffine wird es trotzdem tun und Ihre Kitt-Sitzung nicht stören. (Ich benutze keine Fn-Tasten während einer Putty-Sitzung, daher weiß ich nicht, was passiert, wenn Sie Fn-Tasten verwenden möchten.)

TomH
quelle
0

2017-09-20: Die Zeicheninjektion wurde behoben, indem Koffein mit "caffeine.exe -useshift -noicon" im Taskplaner gestartet wurde, der bei der Anmeldung ausgelöst wurde. Kein Symbol, keine Zeichen mehr in meinen Mintty / Bash-Sessions. Das war so nervig. Vielen Dank an alle für Ihre Hinweise.

Marc Verreault
quelle