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:
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 --maximize
ao 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