Olá, estou tentando usar o expect para solução de problemas de rede entre dois dispositivos. em resumo, o que estou tentando alcançar é executar um script usando expect que entra em 2 dispositivos e aplica comandos.
- o script pede ao usuário para inserir os 2 nomes de host
- As variáveis usuário, senha e prompt são definidas
- processo de geração para ssh no primeiro dispositivo
- mostrar comandos para fins de solução de problemas
Tudo o que foi dito acima funciona bem... o problema surge ao tentar fazer ssh no outro nome de host, basicamente meu script atinge o tempo limite após 10 segundos e nunca faz ssh no outro dispositivo.
Agradecemos antecipadamente a esta comunidade pelo seu excelente trabalho ajudando
aqui está o código
#!/usr/local/bin/expect -f
exec tput clear >@ stdout
set timeout 10
puts "Enter hostname to connect"
set c [gets stdin]
puts "which is the destination hostname?"
set dhostname [gets stdin]
#setting password variable, reading it from file
set pa [open "pass.txt" r]
set pass [read $pa]
close $pa
#setting user variable
set user xxxx
#setting prompt variable
set prompt "(%|#|\\$|>|~|:) $"
spawn -noecho ssh $user@$c;
expect {
"Are you sure you want to continue connecting (yes/no)" {send {yes};
send "\r"
exp_continue}
"assword:" {
send "$pass\r"
expect -re $prompt
}
}
##commands to execute on the device
send "show system uptime\r";
expect "$prompt"
send "exit\r";
expect -re $prompt
send "ssh $user@$dhostname";