Você já tentou usar expect
?
script de login simples escrito em esperar:
#!/usr/bin/expect
set timeout 9
set username [lindex $argv 0]
set password [lindex $argv 1]
set hostname [lindex $argv 2]
log_user 0
if {[llength $argv] == 0} {
send_user "Usage: scriptname username \'password\' hostname\n"
exit 1
}
send_user "\n#####\n# $hostname\n#####\n"
spawn ssh -q -o StrictHostKeyChecking=no $username@$hostname
expect {
timeout { send_user "\nFailed to get password prompt\n"; exit 1 }
eof { send_user "\nSSH failure for $hostname\n"; exit 1 }
"*assword"
}
send "$password\r"
expect {
timeout { send_user "\nLogin failed. Password incorrect.\n"; exit 1}
"*\$ "
}
send_user "\nPassword is correct\n"
send "exit\r"
close
Exemplo de uso:
./script_name user_foo pass_bar hostname.com
Ele só tentaria fazer o seu login e fornecer qualquer mensagem de erro caso algo desse errado e, caso contrário, diria "A senha está correta" e, em seguida, sairá da sessão.
Alguns dos parâmetros dependerão do sistema ao qual você está se conectando. Além disso, usar esperar significa que você sabe qual será a saída ao efetuar login e executar comandos.
Este tutorial abordará suas necessidades