O shell SSH lançado usando “esperar” não tem largura total. Como posso consertar isso?

4

Eu estou usando esperar para auto login no SSH de um lançador Unity, o comando é algo como isto:

gnome-terminal -t SSH1 -e "expect -c 'spawn ssh [email protected] ; expect assword ; send \"password123\n\" ; interact'"

Isso funciona bem para se autenticar automaticamente, mas se eu maximizar a janela do terminal gnome, o conteúdo do shell ssh permanecerá menor como se a janela tivesse o tamanho padrão, assim:

No começo eu pensei que era porque o gnome-terminal estava sendo lançado com o tamanho padrão e quando maximizado por algum motivo o material do ssh não era redimensionado, mas eu adicionei gnome-terminal --window --maximize ao comando, e o mesmo problema permanece, a janela começa maximizada, mas o texto do shell ssh ainda é o tamanho do terminal padrão.

Além disso, se eu apenas abrir um terminal e digitar esse comando na parte superior, tenho o mesmo problema como se eu o iniciasse a partir do iniciador do Unity.

Alguma idéia do que poderia causar isso e como corrigi-lo?

    
por nirgxx 08.01.2012 / 17:59

4 respostas

2

a melhor maneira de obter o efeito desejado é usar as chaves ssh como enzotib sugerido.

Primeiro

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ ssh-keygen -t rsa

pressione enter em cada prompt deixando os campos em branco para criar uma chave padrão sem senha. É isso que você quer.

Em seguida, empurre a chave pública para o servidor.

$ ssh-copy-id [email protected]

Finalmente, crie um lançador com o comando:

gnome-terminal -t SSH1 -x ssh [email protected]
    
por Smithamax 12.01.2012 / 12:46
1

Isso tem a ver com a variável de ambiente que o Expect usa para sua configuração de terminal.

Isso pode ser corrigido facilmente adicionando a seguinte linha ao início do seu script do Google Expect:

set ::env(TERM) vt100

Descobri que, se você tem algum caractere colorido. Se você quiser ver personagens coloridos, tente também:

set ::env(TERM) xterm
    
por user845893 02.07.2018 / 19:22
0

Use o seguinte no topo do seu script:

#trap sigwinch and pass it to the child we spawned
trap {
 set rows [stty rows]
 set cols [stty columns]
 stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCH
    
por Anish Sneh 11.09.2015 / 15:04
0

Adicione isto ao seu código:

trap {
    set XZ [stty rows   ]
    set YZ [stty columns]
    stty rows $XZ columns $YZ < $spawn_out(slave,name)
} WINCH

Isso parece estar funcionando para mim no Ubuntu 17.10

    
por mvledn 02.04.2018 / 23:30