linhas incorretas são exibidas no console ssh

3

Eu tenho problema com minhas linhas de desenho do console. O problema é quando eu conecto através do ssh ao servidor tudo desenha ok. Mas quando eu uso a tecla de seta para mostrar os últimos comandos usados, muitas vezes deixa alguns caracteres após $ sign:

user@host:~$ cd /var/www_vhosts/
user@host:/var/www_vhosts$ ls -la instalator-paczek/
razem 16
drwxrwxr-x  3 root        root       4096 02-20 10:48 .
drwxr-xr-x 13 root        root       4096 05-17 11:11 ..
-rwxrw-r--  1 root        developers 3380 05-29 11:03 instalator-paczek.sh
drwxrwxr-x  2 user developers 4096 05-29 11:03 logi
user@host:/var/www_vhosts$ cd instalator-paczek/
user@host:/var/www_vhosts/instalator-paczek$ nano instalator-paczek.sh 
user@host:/var/www_vhosts/instalator-paczek$ cp -r inst
user@host:/var/www_vhosts/instalator-paczek$ nano /etc/issue
user@host:/var/www_vhosts/instalator-paczek$ uname
Linux
user@host:/var/www_vhosts/instalator-paczek$ uname -a
Linux host 2.6.32-5-amd64 #1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU/Linux
user@host:/var/www_vhosts/instalator-paczek$ cat /etc/issue
Debian GNU/Linux 6.0 \n \l
# here I use up arrow key to display last used commands and everything is ok until it show last: "cp -r in..." command
# "cp -r inst" is shown and next last used commands are shown after those 10 characters. I displays them like:
# $ cp -r instls -la
# $ cp -r instcd directory 
# etc.
# I tried using backspace but it clear characters just until "cp -r inst", not even one more
# prompt is shown correctly only after i press enter or ^C
user@host:/var/www_vhosts/instalator-paczek$ cp -r instnano /etc/issue 
user@host:/var/www_vhosts/instalator-paczek$ ls
instalator-paczek.sh  logi

O que é ainda mais irritante é o que acontece quando digito mais caracteres do que a largura do console. Cursor de alguma forma volta para o início da linha e sobrescreve prompt:

/d/asd/as/d/asd/asd/as/d/asd/asdww_vhosts/instalator-paczek$ ls -la asdkasdasdasd/asdasdasd/asdasdasdasdasdas/dasdsdaas/d/asd/as/d/asd/as

Não consigo usar comandos longos porque substitui o início e não consigo ver se digitei tudo corretamente. Comando longo quando colado dentro do console funciona mesmo se o monitor estiver corrompido. É como se apenas a tela estivesse corrompida, mas o comando em si é ok.

Eu tenho o Ubuntu 12.10 e uso Konsole como aplicativo de console. No servidor há Debian GNU Linux 6.0 e xterm.

user@host:/var/www_vhosts/instalator-paczek$ echo $TERM
xterm

Isso só acontece com esse servidor que outros servidores que eu conecto funcionam bem com Konsole .

Como consertar isso?

EDITAR

É possível que esses erros estejam ocorrendo porque não há xterm instalado no servidor e não há comando de redimensionamento?

user@host:~$ stty -a
speed 38400 baud; rows 57; columns 151; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
user@host:~$ stty -a
speed 38400 baud; rows 57; columns 172; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

Parece que o redimensionamento da janela do console também muda stty .

EDIT2

Instalei o pacote xterm no servidor. Eu saí e fiz o login novamente, mas o problema ainda é o mesmo. Devo reiniciar o servidor depois de instalar o xterm ou algo assim?

    
por piotrekkr 03.06.2013 / 10:29

2 respostas

0

OK, finalmente encontrei a solução. O problema era que $PS1 não tinha sequências de cores entre \[ e \] . Antes de corrigir $PS1 estava:

export PS1='\e[1;32m\u@\h:\w$ \e[m'

após correção:

export PS1='\[\e[1;32m\]\u@\h:\w$ \[\e[m\]'

Encontrei a solução aqui: link

    
por 09.06.2013 / 21:58
4

Após conectar-se ao servidor remoto, eu tentaria executar o comando resize . Isso definirá as configurações do terminal como o tamanho atual da janela.

Além disso, você pode usar o comando reset , se o seu terminal parecer estar em um estado anormal. Isso irá reverter seu terminal para um estado bom conhecido.

Você pode ler esses dois comandos em suas páginas man.

comando de redimensionamento ausente

O comando resize faz parte do pacote xterm, portanto, se isso não estiver instalado, este comando não estará disponível.

Coisas adicionais para experimentar

Se nenhum dos comandos acima funcionar ou estiver disponível, muitos poderão redefinir seu terminal stty usando o comando stty sane .

    
por 03.06.2013 / 11:01