script ssh login para o servidor e passe a senha do root

1

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?

    
por user53029 07.06.2016 / 22:25

1 resposta

1

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.

    
por 07.06.2016 / 22:32