O shell SSH iniciado usando "expect" não tem largura total. Como posso consertar isso?

O shell SSH iniciado usando "expect" não tem largura total. Como posso consertar isso?

Estou usando o expect para fazer login automático no SSH a partir de um inicializador do Unity, o comando é mais ou menos assim:

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

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

captura de tela

A princípio pensei que era porque o gnome-terminal estava sendo iniciado com o tamanho padrão e quando maximizado por algum motivo o material ssh não foi redimensionado, mas depois adicionei gnome-terminal --window --maximizeao comando, e o mesmo problema permanece, a janela começa maximizada mas o texto do shell ssh ainda é do tamanho do terminal padrão.

Além disso, se eu apenas abrir um terminal e digitar esse comando na parte superior, terei o mesmo problema como se eu o iniciasse no inicializador do Unity.

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

Responder1

Use o seguinte no topo do seu script esperado:

#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

Responder2

a melhor maneira de obter o efeito desejado é usar chaves ssh comoenzotibesugerido.

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 é o que você quer.

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

$ ssh-copy-id [email protected]

Finalmente crie um launcher com o comando:

gnome-terminal -t SSH1 -x ssh [email protected]

Responder3

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

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

set ::env(TERM) vt100

Descobri isso se você tiver algum personagem colorido. Se quiser ver caracteres coloridos, você também pode tentar:

set ::env(TERM) xterm

Responder4

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

informação relacionada