您好,我正在尝试使用 Expect 来排除两个设备之间的网络故障。总之,我想要实现的是使用 Expect 运行一个脚本,该脚本输入 2 个设备并应用命令。
- 该脚本要求用户输入 2 个主机名
- 设置变量用户、密码和提示
- 生成进程以 ssh 进入第一个设备
- 显示用于故障排除的命令
以上所有工作正常....当尝试 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";