使用expect脚本从远程计算机执行ssh

时间:2013-10-07 13:46:19

标签: ssh expect

我是新手,希望脚本和一个用例,我需要从一台机器上做一个ssh,我已经使用expect脚本完成了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:连接到主机machine2.domain.com端口22:操作超时。我知道22是ssh运行的默认端口,我可以通过给ssh提供-p选项来手动覆盖它。

如果我在没有预期脚本的情况下尝试独立ssh,我会收到一个提示,要求我输入(是/否)。如果我在没有expect脚本的情况下直接执行ssh,那么从哪里获取正确的端口。如果我不需要在shell上输入端口号,为什么在使用expect脚本时需要输入端口号。

1 个答案:

答案 0 :(得分:4)

那就是,你不会产生一个新的ssh:spawn在你的本地机器上创建一个新的进程。您只需将命令发送到远程服务器

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

# at this point, carry on scripting the first ssh session:
send "ssh username@machine2.domain.com\r"
expect ...