usando expect to ssh 1 host, aplique alguns comandos, saia do dispositivo e ssh outro dispositivo para aplicar alguns outros comandos

usando expect to ssh 1 host, aplique alguns comandos, saia do dispositivo e ssh outro dispositivo para aplicar alguns outros comandos

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.

  1. o script pede ao usuário para inserir os 2 nomes de host
  2. As variáveis ​​usuário, senha e prompt são definidas
  3. processo de geração para ssh no primeiro dispositivo
  4. 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";

informação relacionada