flandatico
(usa Ubuntu)
Enviado em 08/02/2011 - 11:12h
Olá Pessoal!
Tenho algumas dúvidas com relação ao uso do expect. Dei uma fuçada aqui, mas não encontrei ninguém falando sobre isso...
Ainda estou em fase de pesquisa e talvez eu mesmo responda essa dúvida aqui no VOL depois a fim de dividir o conhecimento com a galera..
Bom, é o seguinte:
Estou usando o expect para acessar uma máquina remota através de minha máquina local, mas o problema é que só posso acessar essa máquina remota de uma unica máquina aqui em minha empresa, portanto são 3 máquinas nesse processo.
uso o expect para dar um ssh no meu servidor e enviar a senha, portanto meu script faz isso automaticamente, aí desse servidor quero executar um outro ssh pra acessar a máquina remota, mas em vez desse comando ssh ser executado no servidor onde estou conectado ele é executado em minha máquina e dá erro por que não faço parte da vpn...
O expect está instalado nas duas máquinas, os ips estão corretos, bem como as informações de login.
Vou dar um exemplo do meu código:
#!/usr/bin/expect -f
set timeout 1
#Aqui vou conectar no meu servidor, ele faz parte da vpn onde está a máquina a qual quero me conectar
spawn ssh -Xv user@server
expect {
"*yes\/no*"
{
send "yes\r"
exp_continue
}
"user@server's password: "
{
send "password\r"
exp_continue
}
}
#aqui já estou logado no servidor e agora quero executar esse ssh para entrar na máquina remota, mas ele dá erro por que é executado na minha máquina mesmo. Já testei o mesmo no servidor, se rodar isso lá dentro dá certo.
spawn ssh -Xv user@remote_host
expect {
"user@remote_host's password: "
{
send "password\r"
exp_continue
}
}
interact
# aqui eu termino.
Alguém tem alguma sugestão?
Só gostaria de ressaltar que ainda estou aprendendo a usar o expect e que, se alguém quiser sugerir outra alternativa, fique a vontade, ams quero mesmo é desvendar esse mistério aí..
Grande Abraço e viva o linux!