No script, tive que passar o sinalizador -t para forçar a alocação de tty:
spawn ssh -t <server> su -
Agora funciona como esperado.
Eu escrevi um script de expectativa para automatizar o processo de login do ssh. Minha conta de usuário tem configuração de chaves rsa, mas uma vez que eu logar, eu quero mudar para root, mas o servidor remoto está pendurado na senha. Eu posso ver o script alimentando a senha para o servidor remoto, embora seja visível, que é outra coisa que eu gostaria de saber se posso me esconder. Mas alguém pode me dizer por que isso está pendurado?
#!/usr/bin/expect
spawn ssh <server> su -
expect "Password"
send "MyPassword\r"
interact
Apenas fica lá nessa tela:
Password: "password"
Com o cursor logo abaixo, ele pisca continuamente. Em / var / log / secure, comparei as linhas da minha tentativa de login com um script normal, no qual obtinha root manualmente.
Script su:
Jun 7 15:17:50 <server> su: pam_unix(su-l:session): session opened for user root by (uid=1000)
Manual su:
Jun 7 15:18:48 <server> su: pam_unix(su-l:session): session opened for user root by <user>(uid=1000)
A única coisa é que eu vejo diferente é o login manual tem meu nome de usuário listado.
Eu tentei alterar o comando para:
spawn ssh <server> su - root
spawn ssh <server> sudo su
Mas nenhum deles funciona. Como posso conseguir isso?