PuTTY inserisce personaggi casuali durante una sessione


26

Di recente ho iniziato a affittare spazio su un server remoto per poter lavorare su un progetto. Ho scoperto che un modo relativamente indolore per accedervi su una macchina Windows è attraverso PuTTY. Tuttavia, c'è una cosa che mi ha sempre infastidito quando lo uso: apparentemente senza motivo a volte vengono inseriti caratteri casuali sul cursore.

Il più delle volte è solo una singola tilde, ma raramente sputa quella che sembra una sequenza di escape ([[^ 8 o simili). Accadrà solo quando sono concentrato sulla finestra, sia che scriva o che sia a 20 piedi di distanza dalla tastiera. Se lasciato abbastanza a lungo, sputerà le tilde a intervalli casuali (la media è di circa 1 minuto).

Infine, questo comportamento sembra incoerente quando si eseguono programmi come nano o l'interfaccia mysql: in nano, invece di inserire tildes, imporrà dei segni (ctrl- ^); in mysql, le linee diventeranno non modificabili.

La mia domanda è questa: qualcun altro ha sperimentato questo tipo di comportamento in PuTTY? E se sì, cosa si può fare per prevenire / correggere questo comportamento?


Il tuo computer lo fa anche se lasci aperto un programma casuale sul tuo host per alcune ore, come il blocco note?
cutrightjm,

@ekaj No, solo in PuTTY. E in modo simile programmi basati su PuTTY come MobaXterm (ho scaricato la versione portatile per testare) EDIT: solo durante una sessione SSH a Moba
Zachary Polikarpus

Hmm. Sei sicuro che non sia abbastanza vicino al periodico, come sempre 55-65 secondi mentre lo stucco è completamente inattivo? In tal caso, potrebbe trattarsi di un'attività "keep-alive", sia dall'estremità del server sia dal mastice. Dai un'occhiata alle cose trovate sotto una ricerca "viva" in aiuto stucco. Forse questi saranno utili: superuser.com/questions/94436/… unix.stackexchange.com/questions/6105/…
mgkrebbs

@mgkrebbs A volte sembra periodico, ma a volte non si verifica per circa 5-6 minuti, quindi torna a sembrare periodico. Per quanto riguarda l'idea keep-alive, se questo è il caso, sembra essere isolata sul lato client perché se avvio una sessione ssh da una macchina linux nel terminale nativo, va tutto bene. Ho visto quel primo link quando stavo ponendo la domanda, e ho provato a cambiare il tipo di terminale in "linux", ma questo non sembrava fare alcuna differenza evidente.
Zaccaria Polikarpus,

Ho riscontrato anche questo problema. Si presenta quando sto usando Putty, Kitty e persino MobaXterm.
Attilah,

Risposte:


30

Ho avuto lo stesso problema con PuTTY e ho scoperto che era causato da un'applicazione che ho chiamato "caffeina" che preme efficacemente il tasto F13 ogni minuto per interrompere l'attivazione del salvaschermo (i criteri di gruppo mi impediscono di cambiare il timeout del salvaschermo su la mia macchina). Disabilitare l'applicazione mi ha risolto il problema.


2
All'epoca avevo installato caffeina! Adesso ha senso ... Grazie Bruce!
Zaccaria Polikarpus,

3
Doh, avrei dovuto sospettarlo. Uccidere la caffeina ha funzionato. PS: Vedi la mia soluzione qui sotto per far lavorare insieme Caffeina e Putty
shreyansp,

Avevo un'app di segnaletica che faceva lo stesso. Alcuni [28 ~ sono apparsi sul Terminale.
Curious Mind, il

12

Se preferisci avere Putty e Caffeina in esecuzione, segui questi passaggi:

  1. Stop alla caffeina
  2. Controlla la caffeina readme.txt per la chiave predefinita simulata - la mia era F15
  3. Accedi al tuo terminale remoto tramite Putty
  4. Avvia caffeina (Suggerimento: avvia la caffeina con un intervallo breve, ad es. 3 secondi).
  5. Metti a fuoco la sessione di Putty.
  6. Al prompt dei comandi di bash premere Ctrl+V(Questo è necessario per ottenere il codice speciale per il tasto. Ad esempio, provare Ctrl+Vseguito da F12)
  7. Attendere che la caffeina simuli la chiave
  8. Il codice chiave viene visualizzato sulla linea di comando (ad esempio F15è ^[[28~, dove ^[è fuga). Stop alla caffeina
  9. Ora puoi associare questa chiave allo spazio vuoto in modo che quando la caffeina la simula, non verrà digitata ~
    • modifica ~/.inputrc(crea un nuovo file se non esiste)
    • aggiungi la linea "\e[28~":""
  10. Inizia la caffeina
  11. Riavvia la sessione del terminale
    • Non ci dovrebbero essere più casuali ~quando si utilizza il terminale Putty con quel server Linux

+1. Ho ampliato questa risposta di seguito (con una spiegazione del perché questa non è stata la risposta ottimale per me) :)
Petru Zaharia,

7

Ho trovato la soluzione di shreyansp la più (ma non del tutto) soddisfacente :)
Ecco il mio tentativo di migliorarlo (ovviamente YMMV). Spero che questo possa essere utile a coloro che cercano una soluzione :)

La mia soluzione si comporta come segue:

  • la caffeina invia a Windows un codice chiave virtuale appropriato che:
    • impedisce a Windows di andare in modalità sospensione o inattiva
    • altrimenti non genera alcun effetto collaterale su Windows né da solo né in combinazione (no Ctrl, Maiusc, Alt, Alt-Gr, Win, F1-F5, F10, ecc.)
    • o non viene inviato a Putty o viene ignorato da Putty

TL; DR: la mia soluzione viene applicata tra i passaggi 2 e 3 (vedi sotto) con il -key:0Eparametro caffeina:
Esci dalla caffeina e riavviala con:
caffeine.exe 5 -key:0E(per un facile test)
caffeine.exe 50 -key:0E(per un salvaschermo obbligatorio impostato a 1 minuto)

  • Avvia il readprogramma sull'host remoto e osserva come non vengono ricevuti i tasti ogni 5 o 50 secondi.
  • Esci readconCtrl+C

Shreyansp ha proposto una soluzione in cui sarebbe stata applicata una correzione tra i passaggi 5 e 10 (vedi sotto).
L'effetto collaterale di ciò (sulla mia configurazione) è stato che, con ogni sequenza di tasti che lo stucco veniva inoltrato dalla caffeina all'host remoto:

  • ha attivato una 'Ripristina barra di scorrimento alla pressione dei tasti' (impostazione nella pagina Putty / Window)
    che normalmente vorrei, ma solo quando io (l'essere umano) premo il tasto ma non regolarmente dalla caffeina :)
  • readline / bash la versione tradotta (da '"\e[28~"'a '""'(tasto vuoto?) ha causato l'interazione della sessione remota per alcuni secondi

Per testare facilmente quanto sopra, esci da Caffeina e riavvialo con intervallo di 5 secondi e Virtual-Key Code 07:
caffeine.exe 5 -key:07

  • Avvia il readprogramma sull'host remoto e guarda come vengono ricevuti i tasti ogni 5 o 50 secondi.
  • Esci readconCtrl+C

La sequenza di tasti 'pipeline', a quanto ho capito:

  1. La caffeina invia un codice di chiave virtuale a Windows
  2. Windows invia quel codice chiave virtuale a Putty
  3. Putty esegue alcune "traduzioni" / "mappature" in base ad alcune impostazioni della sessione in:
    • Terminale/*
    • Finestra/*
  4. Putty invia il codice chiave "tradotto" / "mappato" all'host remoto
  5. Sull'host remoto, il programma 'terminale' (es: $TERM=xterm, vt100, vt102, vt220, etc.) traduce dalla 'linea protocollo' in codici chiave.
  6. la libreria readline esegue alcune traduzioni / mappature basate su ~/.inputrc
  7. readline invia il codice chiave a bash
  8. bash esegue alcune traduzioni / mappature basate su ~/.bashrc(basato sul comando incorporato bind)
  9. bash o readline (non sono sicuro di quale) invia il codice chiave tradotto a nano (il mio editor di testo)
  10. Questa pipeline può diventare ancora più lunga aggiungendo il screenprogramma (che include a $TERM=screenper il passaggio 5. e ritorna di nuovo al passaggio da 6. a 10.)

Nota: una volta arrivato al punto 4., diventa molto difficile controllare con precisione i diversi livelli di "traduzioni" / "mappature". Consiglierei di evitarlo, se puoi.


Sfondo:
ho usato caffeine.exe -key:07per anni prima di avere a che fare con un pfsense 2.3.3-RELEASE-p1 (basato su FreeBSD 10.3-RELEASE).
Quindi, è caffeine.exe -key:07stato ricevuto dall'altra parte come ^[[28~... che sembra essere mappato su Ctrl+^(Set Mark) in Nano.
Questo è stato piuttosto fastidioso (immagina qualcuno che prema e tieni premuto il tasto Maiusc mentre sposti il ​​cursore del testo nel Blocco note).

In precedenza, ho fatto numerose personalizzazioni in Putty Impostazioni, ~/.tcshrc, ~/.inputrc, ~/.bashrc, ~/.nanorc, ~/.screenrcper ottenere quello che io considero funzionalità di base ( Backspace, Delete, Home, End, PgUp, PgDown, Ctrl+Left, Ctrl+Right, Numpad 0-9, Numpad ./*-+) lavorare in modo coerente tra bash / nano / schermo.

Una volta scoperto questo caffeine.exe -key:07"bug", non volevo ripercorrerlo di nuovo :)


Testato su:
Windows 8.1 64 bit Enterprise (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (basato su FreeBSD 10.3-RELEASE) / bash 4.4.12-release / nano 2.7.3 / schermo 4.04. 00


Riferimenti:


1

Sembra davvero una sequenza di escape, o un personaggio di controllo, che potrebbe spiegare perché non lo vedi in altri programmi come il blocco note.

Non sono del tutto sicuro di quali tasti debbano essere premuti per ottenere questo output, ma giocherò un po 'e proverò a scoprirlo. Puoi nominare un'altra sequenza mostrata? Il comportamento di mysql e nano potrebbe essere solo un'altra interpretazione delle sequenze di escape che sembrano entrare.

Infine, la domanda è: cosa causa questi input chiave. Usi per caso un laptop che, ad esempio, controlla automaticamente la retroilluminazione utilizzando un software proprietario? Ho visto alcuni strani software preinstallati emulare i tasti premuti invece di usare l'API. Potresti voler usare qualcosa come inputlog su te stesso.


Da allora ho cambiato i sistemi operativi, cambiando prima il mio doppio Win-8.1 e Ubuntu solo con Ubuntu, poi con Mint e infine con Arch. Non ho riscontrato problemi simili, il che mi porta a credere che il problema fosse isolato dal modo in cui Windows interagiva con PuTTY. Per quanto riguarda la causa degli input chiave, non sarei sorpreso se quello che hai suggerito fosse il caso, tuttavia non ho usato o notato alcun tipo di controllo automatico dell'hardware. Se avessi ancora quei registri, li pubblicherei. EDIT: Se qualcun altro sta vivendo questo ti incoraggio a pubblicare queste informazioni.
Zaccaria Polikarpus,

Vedi anche la risposta di Gilles in Why Putty che inserisce ~ nella mia shell Bash di Fedora , il che spiega bene perché uno potrebbe vedere ~(e sentire un beeb) solo quando viene effettivamente \e[3~inviato qualcosa del genere .
Arjan,

(A parte: potresti voler collegarti a quel post, dato che inizialmente pensavo che vedere un singolo non~ avrebbe indicato una sequenza di escape.)
Arjan,

1

Uso l'opzione -key: 07 sulla riga di comando per avviare caffiene .. Sembra fermare il problema di Putty.

Basta inserirlo in un file bat

chiave caffeine.exe: 07


Uso 'caffiene.exe -key: 07' e mi ha servito bene per anni. Tuttavia, da quando mi sono collegato a my pfSense (basato su FreeBSD), questo viene ricevuto dall'altra parte come ^ [[28 ~ ... che sembra essere mappato su Ctrl + ^ (Set Mark) in Nano. Questo è abbastanza fastidioso (immagina qualcuno che prema e tieni premuto il tasto Maiusc mentre sposti il ​​cursore del testo nel Blocco note). :) Dovrò trovare un'altra chiave sul lato caffeina o fare una mappatura personalizzata sul lato FreeBSD. (vedi defs @ msdn.microsoft.com/en-us/library/windows/desktop/... )
Petru Zaharia

Passato a caffeine.exe -key:0E(vedi la mia risposta di seguito). Sembra funzionare bene con Windows (8.1 a 64 bit) e Putty lo ignora felicemente :)
Petru Zaharia,

0

Qualcuno sui forum Cisco suggerisce di modificare il parametro di velocità della console per risolvere questo problema.

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

Hai sicuramente provato tutte le varianti di velocità della console in Putty come menzionato in 1 ?

Nota: se la velocità di trasmissione è impostata in modo diverso dalla velocità predefinita, sulla CLI vengono visualizzati caratteri dispari. Controllare la tabella 1 per impostare i baud rate per diversi valori di Confreg.


1
Le velocità della console sono per le connessioni seriali. Si riferisce a una connessione SSH. Mentre SSH ha un'impostazione "Velocità terminale" ... In realtà non ho mai visto questo causare un problema.
Jared,

0

Ho anche avuto lo stesso problema e ho scoperto che caffeine.exe era davvero il problema. All'inizio ho pensato che non potesse essere causato da caffeine.exe perché lo stavo usando da 2+ anni sul mio vecchio laptop. Ho provato a cambiare caffeine.exe -useshift invece, ma che ha inviato ^ C. Ho trovato un altro programma, Mouse Jiggler, che tiene lontano lo screen saver ma non invia più sequenze di escape nelle mie sessioni di Putty.


0

La soluzione migliore è configurare le impostazioni della sessione di mastice in modo che Caffine non interferisca con essa.

In Putty sotto Terminal Keyboard scegli l'opzione SCO. In Putty sotto Terminal Bell, cambia l'azione in None (per disattivare la suoneria).

Caffine farà ancora la cosa e non disturberà la tua sessione di mastice. (Non uso i tasti Fn durante una sessione di stucco, quindi non so cosa succede se si desidera utilizzare i tasti Fn).


0

20/09/2017: risolto l'iniezione di carbone avviando caffeina con «caffeine.exe -useshift -noicon» nello scheduler delle attività attivato all'accesso. Nessuna icona, niente più caratteri iniettati nelle mie sessioni mint / bash. È stato così fastidioso. Grazie a tutti per i vostri suggerimenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.