我是新来的期望脚本并且有一个用例,我需要从我已经使用期望脚本完成 ssh 的机器上执行 ssh。这是我的代码片段
#!/usr/bin/expect -f
set timeout 60
spawn ssh username@machine1.domain.com
expect "Password: "
send "Password\r"
send "\r" # This is successful. I am able to login successfully to the first machine
set timeout 60
spawn ssh username@machine2.domain.com #This fails
这需要一些时间并且失败说 ssh: connect to host machine2.domain.com port 22: Operation timed out。我知道 22 是运行 ssh 的默认端口,我可以通过为 ssh 提供 -p 选项来手动覆盖它。
如果我尝试在没有期望脚本的情况下独立 ssh,我会收到一个提示,要求我输入(是/否)。如果我在没有期望脚本的情况下直接执行 ssh,那么从哪里获取正确的端口。如果我不需要在 shell 上输入端口号,为什么在我使用期望脚本时需要输入端口号。