使用expect到ssh 1主机,应用一些命令,退出设备并ssh另一个设备以应用一些其他命令

使用expect到ssh 1主机,应用一些命令,退出设备并ssh另一个设备以应用一些其他命令

您好,我正在尝试使用 Expect 来排除两个设备之间的网络故障。总之,我想要实现的是使用 Expect 运行一个脚本,该脚本输入 2 个设备并应用命令。

  1. 该脚本要求用户输入 2 个主机名
  2. 设置变量用户、密码和提示
  3. 生成进程以 ssh 进入第一个设备
  4. 显示用于故障排除的命令

以上所有工作正常....当尝试 ssh 另一个主机名时出现问题,基本上我的脚本在 10 秒后超时,并且从不 ssh 另一个设备。

预先感谢这个社区的出色工作和帮助

这是代码

#!/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";

相关内容