Expect [RESOLVIDO]

1. Expect [RESOLVIDO]

Eduardo Alberto da Silva Amaral
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!




  


2. MELHOR RESPOSTA

Edd Figueiredo Silva
kingmaverick

(usa Slackware)

Enviado em 16/05/2011 - 14:00h

amigo acredito que a solução para seu problema seja simples... você só precisa alterar, depois da primeira conexão ao inves de dar outro spwan você usuaria o comando send:
#!/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 <----------- Aqui ficaria assim
send "ssh -Xv user@remote_host"


expect {

"user@remote_host's password: "
{
send "password\r"
exp_continue
}


}


interact

3. Re: Expect [RESOLVIDO]

Edd Figueiredo Silva
kingmaverick

(usa Slackware)

Enviado em 16/05/2011 - 14:13h

acho que faltou o \r no final do send


4. RESOLVIDO

Eduardo Alberto da Silva Amaral
flandatico

(usa Ubuntu)

Enviado em 21/06/2011 - 12:20h

Funcionou tranqüilo.
Consegui realizar o acesso, mas tem uma coisa que eu gostaria de perguntar:

Eu criei um alias que roda este script, mas nas 2 ou 3 primeiras execuções eu não consigo o acesso. parece que o sistema primeiro tem que armazenar algo na memória, é no mínimo estranho. só depois de 2 ou 3 tentativas o acesso é realizado.

Será que eu tenho que realizar algum outro processo antes de tentar o acesso??






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts