usando expect para ssh 1 host, aplique algunos comandos, salga del dispositivo y ssh a otro dispositivo para aplicar algunos otros comandos

usando expect para ssh 1 host, aplique algunos comandos, salga del dispositivo y ssh a otro dispositivo para aplicar algunos otros comandos

Hola, estoy intentando utilizar expect para solucionar problemas de red entre dos dispositivos. En resumen, lo que intento lograr es ejecutar un script usando expect que ingresa a 2 dispositivos y aplica comandos.

  1. el script le pide al usuario que ingrese los 2 nombres de host
  2. Se establecen las variables usuario, contraseña y mensaje.
  3. proceso de generación para ssh en el primer dispositivo
  4. mostrar comandos para solucionar problemas

Todo lo anterior funciona bien... el problema surge cuando intento enviar por ssh el otro nombre de host, básicamente mi secuencia de comandos se agota después de 10 segundos y nunca envía por ssh el otro dispositivo.

Gracias de antemano a esta comunidad por su gran trabajo ayudando.

aquí está el 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";

información relacionada