我是新手,希望脚本和一个用例,我需要从一台机器上做一个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脚本时需要输入端口号。
答案 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 ...