Como faço para restaurar (xterm | gnome-terminal) o acondicionamento após o telnet para o equipamento HP ter estragado tudo?

3

Eu faço telnet para um switch HP do meu (xterm | gnome-terminal). Saia do telnet. Isso quebra o comportamento do terminal. (Se você não tem um switch HP para fazer telnet, pode-se usar cat este arquivo em um terminal).

Agora digite um comando muito longo (mais de uma linha, e veja que a segunda linha não se resume à próxima linha, mas "permanece na linha atual". O que torna impossível editar comandos anteriores ou usar o terminal por mais de uma linha.

Veja que cat filewithlonglines.txt ou git log -p mostra apenas os primeiros 80 caracteres de linhas com mais de 80 caracteres.

reset não funciona. stty -g > stty.works , executar telnet, stty $(stty.works) restaura as configurações stty , mas o comportamento ainda está quebrado.

Eu tenho que fechar o terminal e começar um novo. : - (

O que posso fazer além de reset e stty save / restore para corrigir meus terminais quebrados após um telnet?

EDIT: Descobri que, se eu usar screen como em um desses comandos:

screen bash -c "cat hptelnet.escape ; bash"

ou

screen telnet hpswitch

O meu terminal ainda funciona corretamente quando a tela sai. Então, uma solução alternativa é colocar a tela na frente do comando que atrapalha meu terminal, mas eu ainda gostaria de saber como recuperar um terminal que já foi bagunçado ...

    
por Peter V. Mørch 18.10.2011 / 09:11

3 respostas

3

No caso específico do problema causado pelos switches HP, descobri (usando script , que registra cada byte enviado ao terminal), que o modo de quebra automática do terminal estava sendo desativado por meio do código VT100 " <ESC>[?7l "e depois nunca mais ser ativado novamente.

O código VT100 para ativar o retrocesso automático é " <ESC>[?7h ", que você pode enviar para o terminal com este comando:

printf "3[?7h"

No entanto, isso pressupõe que o terminal seja compatível com o VT100, o que, embora seja uma boa aposta, não é uma certeza. A maneira mais correta de fazer isso é confiar nas configurações do terminfo e execute este comando:

tput smam

que gera exatamente a mesma saída que o comando printf acima, assumindo um terminal no estilo VT100. O recurso terminfo "smam" é "Set Mode: Automatic Margins". Seu parceiro é "rmam": "Modo Redefinir: Margens Automáticas".

A propósito, eu realmente gostaria que ssh tivesse uma opção de configuração "LocalEndCommand" (semelhante a "LocalCommand") para que eu pudesse executar automaticamente este un-fucker no final de cada conexão ssh do switch HP.

† Obrigado, HP!

‡ Você acha que a HP fez essa aposta ou não? Eu estou supondo que eles fizeram, e sempre enviar códigos VT100. Nesse caso, se o seu terminal não for compatível com o VT100, você não terá esse problema para começar.

    
por 09.08.2014 / 00:52
1

Além de reset , há algumas outras coisas que sempre tento. E às vezes ajuda a restaurar a sanidade do terminal:

  1. resize (em alguns sistemas não está em $ PATH, normalmente encontrado em algo como / usr / X11 / bin /)
  2. echo "^v^o" (pressione CTRL+V e depois CTRL+O , esse é um truque antigo do Unix que ajudou muito frequentemente depois que eu acidentalmente fiz cat em um arquivo binário).
  3. stty sane
por 21.10.2011 / 09:31
0

Além disso, tente:

# https://gist.github.com/raw/1294767/a1ea19be2f70b092057a5232c2d05a0ee9bf145b/hptelnet.escape
cat hptelnet.escape

tput reset

# each of the following commands may work as well
tput smcup   # string to start programs using cup
tput is2     # initialization string; init_2string


# ... and as a last resort try ...
# cf. "The Alternate Character Set", 
# http://www.in-ulm.de/~mascheck/various/alternate_charset/

# added 3c to clear screen
alias vtn='echo "X[mX(BX)0OX[?5lX7X[rX8Xc" | tr "XO" "37"'   
vtn
    
por 18.02.2013 / 17:13