期望自动登录到二级远程计算机

时间:2011-11-16 13:02:03

标签: linux bash ssh expect

我需要登录一个开发服务器才能将内容放在实时服务器上。 处理器就像这样

  • 登录开发服务器。
  • Fire Deploy脚本
  • 部署脚本要求输入3个密码。
  • 后跟ssh密码短语密码。

我在开发和实时服务器上没有任何其他访问权限。所以我不能使用基于密钥的身份验证。以及我无法在服务器上安装任何东西。

是否可以使用expect或任何其他实用程序,我可以自动执行此操作?

我尝试过使用

spawn ssh deploy
expect_after eof { exit 0 }
expect "# "
send "deploy_to_server <branch_name>\r"
expect eof
expect "*password*"  { send "passworrd" }

修改

   spawn ssh deploy
    send "deploy_to_server <branch_name>\r"
    expect eof
    expect "*password*"  { send "passworrd\n" }

2 个答案:

答案 0 :(得分:1)

您错过了发送中的行终结符:

expect "*password*"  { send "passworrd\n" }

除此之外,首先期待eof然后在没有重生的情况下等待密码提示似乎是非常荒谬的。

答案 1 :(得分:0)

取决于您如何登录开发服务器以及部署脚本如何工作。如果一切都是基于文本的,那么使用expect脚本来做它就不是问题。