PuTTY insere caracteres aleatórios durante uma sessão


26

Recentemente, comecei a alugar espaço em um servidor remoto para poder trabalhar em um projeto. Eu descobri que uma maneira relativamente indolor de acessá-lo em uma máquina Windows é através do PuTTY. No entanto, há uma coisa que sempre me incomodou ao usá-lo: aparentemente não há motivo para caracteres aleatórios serem inseridos no cursor.

Na maioria das vezes, é apenas um til, mas raramente cospe o que parece ser uma sequência de escape ([[^ 8 ou algo semelhante). Isso só ocorre quando estou focado na janela, digitando ou a 6 metros do teclado. Se for deixado por tempo suficiente, cuspirá as tildes em intervalos aleatórios (a média é de cerca de 1 minuto).

Finalmente, esse comportamento parece inconsistente ao executar programas como o nano ou a interface mysql: no nano, em vez de inserir tildes, ele define marcas (ctrl- ^); no mysql, as linhas se tornarão não editáveis.

Minha pergunta é a seguinte: Alguém mais experimentou esse tipo de comportamento no PuTTY? E se sim, o que pode ser feito para evitar / corrigir esse comportamento?


O seu computador também faz isso se você deixar em aberto um programa aleatório em seu host por algumas horas, como o bloco de notas?
Cutrightjm

@ekaj Não, apenas no PuTTY. E, aparentemente, programas baseados em PuTTY, como o MobaXterm (baixei a versão portátil para teste) EDIT: somente durante uma sessão SSH em Moba
Zachary Polikarpus

Hmm. Tem certeza de que não é muito próximo do periódico, como sempre de 55 a 65 segundos enquanto a massa está totalmente ociosa? Se for, pode ser uma atividade "keep-alive", do lado do servidor ou talvez de massa. Dê uma olhada nas coisas encontradas em uma pesquisa "viva" na ajuda da massa de vidraceiro. Talvez isso seja útil: superuser.com/questions/94436/… unix.stackexchange.com/questions/6105/…
mgkrebbs

@mgkrebbs Às vezes parece periódico, mas ocasionalmente não ocorre por cerca de 5 a 6 minutos; depois, volta a parecer periódico. Em relação à idéia de manter vivo, se for esse o caso, parece estar isolado para o cliente, porque se eu iniciar uma sessão ssh a partir de uma máquina linux no terminal nativo, tudo estará bem. Eu vi o primeiro link quando estava fazendo a pergunta e tentei mudar o tipo de terminal para "linux", mas isso não pareceu fazer nenhuma diferença perceptível.
Zachary Polikarpus

Eu também tenho esse problema. Aparece quando estou usando Putty, Kitty e até MobaXterm.
Attilah

Respostas:


30

Eu tive o mesmo problema com o PuTTY e descobri que estava sendo causado por um aplicativo que chamei "cafeína", que pressiona efetivamente a tecla F13 a cada minuto para impedir que a proteção de tela seja ativada (as políticas de grupo me impedem de alterar o tempo limite da proteção de tela em minha máquina). Desativar o aplicativo me resolveu o problema.


2
Eu tinha cafeína instalada na época! Tudo faz sentido agora ... Obrigado Bruce!
Zachary Polikarpus

3
Doh, eu deveria ter suspeitado disso. Matar cafeína fez o truque. PS: Veja minha solução abaixo para ter cafeína e Putty trabalhando juntos
shreyansp

Eu tinha um aplicativo de sinalização que fazia o mesmo. Alguns apareceram no terminal.
Curious Mind

12

Se você preferir que o Putty e a cafeína funcionem, siga estas etapas:

  1. Stop Cafeína
  2. Verifique no readme.txt do Caffeine a chave padrão simulada - a minha foi F15
  3. Entre no seu terminal remoto via Putty
  4. Iniciar cafeína (Dica: inicie a cafeína com um intervalo curto, por exemplo, 3 segundos).
  5. Traga a sessão Putty em foco.
  6. No prompt de comando do bash, pressione Ctrl+V(Isso é necessário para obter o código especial da tecla. Por exemplo, tente Ctrl+Vseguido de F12)
  7. Aguarde Caffeine para simular a chave
  8. O código de chave serão exibidos na linha de comando (por exemplo, F15é ^[[28~, onde ^[é de escape). Stop Cafeína
  9. Agora você pode vincular essa chave ao espaço em branco para que, quando a Cafeína a simule, ela não digite ~
    • editar ~/.inputrc(crie um novo arquivo se ele não existir)
    • adicione a linha "\e[28~":""
  10. Iniciar cafeína
  11. Reinicie sua sessão do terminal
    • Não deve haver mais aleatório ~ao usar o terminal Putty com esse servidor linux

+1. Eu expandiu sobre esta resposta abaixo (com uma explicação sobre por que isso não era a resposta ideal para mim) :)
Petru Zaharia

7

Eu achei a solução do shreyansp a mais satisfatória (mas não muito) :)
Aqui está minha tentativa de melhorar isso (é claro YMMV). Espero que isso possa ser útil para quem procura uma solução :)

Minha solução se comporta da seguinte maneira:

  • A cafeína envia ao Windows um código de chave virtual apropriado que:
    • impede que o Windows entre em suspensão ou ocioso
    • caso contrário, não gera efeitos colaterais no Windows nem sozinho nem em combinação (sem Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10 etc.)
    • ou não é enviado para Putty ou é ignorado por Putty

TL; DR: Minha solução é aplicada entre as etapas 2 e 3 (veja abaixo) com o -key:0Eparâmetro cafeína:
Saia da cafeína e reinicie-a com:
caffeine.exe 5 -key:0E(para teste fácil)
caffeine.exe 50 -key:0E(para um protetor de tela obrigatório em 1 minuto)

  • Inicie o readprograma no host remoto e observe como nenhuma tecla é recebida a cada 5 ou 50 segundos.
  • Sair readcomCtrl+C

Shreyansp propôs uma solução em que uma correção seria aplicada entre as etapas 5 e 10 (veja abaixo).
O efeito colateral disso (na minha configuração) foi o de que, com cada pressionamento de tecla enviado da cafeína para o host remoto:

  • ele acionou uma 'Redefinir barra de rolagem ao pressionar a tecla' (configuração na página Putty / Window)
    que eu normalmente desejaria, mas somente quando eu (o humano) estiver pressionando a tecla, mas não regularmente pela cafeína :)
  • A versão traduzida do readline / bash (de '"\e[28~"'para '""'(chave em branco?) causou uma interrupção na interação da sessão remota por vários segundos

Para testar facilmente o acima, saia do Caffeine e reinicie-o com um intervalo de 5 segundos e o Código da Chave Virtual 07:
caffeine.exe 5 -key:07

  • Inicie o readprograma no host remoto e observe como as teclas são recebidas a cada 5 ou 50 segundos.
  • Sair readcomCtrl+C

O pressionamento de tecla 'pipeline', como eu o entendo:

  1. Cafeína envia um código de chave virtual para o Windows
  2. O Windows envia esse código de chave virtual para o Putty
  3. O Putty faz algumas 'traduções' / 'mapeamentos' com base em algumas configurações de sessão em:
    • Terminal/*
    • Janela/*
  4. O Putty envia o código da chave 'traduzido' / 'mapeado' para o host remoto
  5. Em que o computador remoto, o programa 'terminal' (por exemplo: $TERM=xterm, vt100, vt102, vt220, etc.) traduz a partir do 'protocolo de linha' em códigos de tecla.
  6. a biblioteca readline faz algumas traduções / mapeamentos com base em ~/.inputrc
  7. O readline envia o código-chave para o bash
  8. O bash faz algumas traduções / mapeamentos com base em ~/.bashrc(com base no comando bind interno)
  9. bash ou readline (não tenho certeza qual) envia o código-chave traduzido para o nano (meu editor de texto)
  10. Esse pipeline pode ficar ainda mais longo adicionando o screenprograma (que inclui um $TERM=screenpara a etapa 5. e volta novamente na etapa 6. a 10.)

Nota: Quando chega à etapa 4., torna-se muito difícil controlar com precisão as diferentes camadas de 'traduções' / 'mapeamentos'. Eu recomendaria evitar isso, se puder.


Antecedentes:
usei caffeine.exe -key:07anos antes de ter que lidar com um pfsense 2.3.3-RELEASE-p1 (baseado no FreeBSD 10.3-RELEASE).
Então, caffeine.exe -key:07foi recebido do outro lado como ^[[28~... que parece ser mapeado para Ctrl+^(Set Mark) no Nano.
Isso foi muito chato (imagine alguém pressionando e mantendo a tecla Shift pressionada enquanto você move o cursor de texto no Bloco de Notas).

Anteriormente, eu fiz inúmeras personalizações no Putty Configurações, ~/.tcshrc, ~/.inputrc, ~/.bashrc, ~/.nanorc, ~/.screenrcpara obter o que eu considero funcionalidade básica ( Backspace, Delete, Home, End, PgUp, PgDown, Ctrl+Left, Ctrl+Right, Numpad 0-9, Numpad ./*-+) trabalhando de forma consistente entre bash / nano / tela.

Depois que descobri esse caffeine.exe -key:07'bug', não quis refazer isso novamente :)


Testado em:
Windows 8.1 Enterprise de 64 bits (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (baseado no FreeBSD 10.3-RELEASE) / bash 4.4.12-release / nano 2.7.3 / screen 4.04. 00


Referências:


1

Isso realmente se parece com uma sequência de escape ou caractere de controle, o que pode explicar por que você não o vê em outros programas como o bloco de notas.

Não tenho certeza de quais teclas precisam ser pressionadas para obter essa saída, mas vou brincar um pouco e tentar descobrir. Você pode citar alguma outra sequência mostrada? O comportamento do mysql e nano pode ser apenas outra interpretação das seqüências de escape que parecem ter sido inseridas.

Finalmente, a questão é o que causa essas entradas principais. Você, por acaso, usa um laptop que, por exemplo, controla automaticamente a luz de fundo usando algum software proprietário? Eu já vi alguns softwares pré-instalados estranhos que emulavam as teclas pressionadas em vez de usar a API. Você pode usar algo como inputlog em si mesmo.


Desde então, mudei os sistemas operacionais, primeiro alterando meu dual Win-8.1 e Ubuntu apenas para Ubuntu, depois para Mint e, finalmente, para Arch. Não tive problemas semelhantes, o que me leva a acreditar que o problema foi isolado da maneira pela qual o Windows interagiu com o PuTTY. Quanto à causa das principais entradas, não ficaria surpreso se o que você sugeriu fosse o caso, no entanto, não usei nem notei nenhum tipo de controle automático de hardware. Se eu ainda tivesse esses logs, eu os publicaria. EDIT: Se mais alguém está passando por isso, encorajo você a publicar essas informações.
Zachary Polikarpus

Veja também a resposta de Gilles em Why Putty inserindo ~ no meu shell do Fedora , o que explica muito bem por que alguém pode apenas ver o ~(e ouvir um beeb) quando na verdade algo \e[3~é enviado.
Arjan

(Como um aparte: você pode querer link para esse post, como no começo eu percebi vendo um único ~seria não indicam uma seqüência de escape.)
Arjan

1

Eu uso a opção -key: 07 na linha de comando para iniciar o caffiene. Parece parar o problema de Putty.

Basta colocar isso em um arquivo bat

caffeine.exe -key: 07


Eu uso 'caffiene.exe -key: 07' e também me serviu bem por anos. No entanto, desde que eu me conectei ao meu pfSense (baseado no FreeBSD), isso é recebido do outro lado como ^ [[28 ~ ... que parece estar mapeado para Ctrl + ^ (Set Mark) no Nano. Isso é bastante irritante (imagine alguém pressionando e mantendo a tecla Shift pressionada enquanto você move o cursor de texto no Bloco de Notas). :) Vou encontrar outra chave no lado da cafeína ou fazer um mapeamento personalizado no lado do FreeBSD. (consulte defs @ msdn.microsoft.com/en-us/library/windows/desktop/… )
Petru Zaharia

Mudou para caffeine.exe -key:0E(veja minha resposta abaixo). Parece funcionar bem com o Windows (8.1 64-bit) e Putty alegremente ignora :)
Petru Zaharia

0

Alguém nos fóruns da Cisco sugere alterar o parâmetro de velocidade do console para resolver esse problema.

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

Você definitivamente tentou todas as variações de velocidade do console no Putty, como mencionado em 1 ?

Nota: Se a taxa de transmissão estiver definida diferente da taxa padrão, caracteres ímpares serão vistos na CLI. Verifique a tabela1 para definir taxas de transmissão para diferentes valores de Confreg.


1
As velocidades do console são para conexões seriais. Ele está se referindo a uma conexão SSH. Embora o SSH tenha uma configuração de "Velocidade do terminal" ... Eu nunca vi isso causar um problema.
Jared

0

Eu também tive o mesmo problema e descobri que caffeine.exe era realmente o problema. No começo, eu pensei que não poderia ser causado pelo caffeine.exe porque eu estava usando isso por mais de 2 anos no meu laptop antigo. Tentei alterar o caffeine.exe -useshift, mas isso enviou ^ C. Encontrei outro programa, o Mouse Jiggler, que mantém a proteção de tela afastada, mas não envia mais seqüências de escape nas minhas sessões do Putty.


0

A melhor solução é definir as configurações na sua sessão de massa para que o Caffine não interfira nela.

No Putty, em Terminal Keyboard, escolha a opção SCO. Em Putty, em Terminal Bell, altere a ação para None (para desativar o sinal sonoro).

O Caffine ainda fará tudo e não incomodará sua sessão de massa. (Eu não uso as teclas Fn durante uma sessão de massa, então não sei o que acontece se você quiser usar as teclas Fn).


0

20/09/2017: Resolvida a injeção de carvão iniciando a cafeína com «caffeine.exe -useshift -noicon» no agendador de tarefas acionado no logon. Nenhum ícone, não há mais caracteres injetados em minhas sessões mintty / bash. Isso foi muito chato. Obrigado a todos por suas dicas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.