put中的作用,脚本在put之后挂起

时间:2013-09-23 23:17:30

标签: expect

我是一个期待并从某人的剧本中学习的新手。在ssh命令之后有一个这样的块,

expect {
   "Password:"    {puts stderr "Wrong password."; exit 1}
   "Last login:"  {puts "Login Successful."}
   timeout        abort
}

嗯,在我的情况下,这是一个问题,如果这是第一次登录到机器,将不会出现“上次登录”。所以我所做的就是添加一些内容并认为这可能有效

expect {
   "Password:"    {puts stderr "Wrong password."; exit 1}
   "Last login:"  {puts "Login Successful."}
   "# "           {puts "Login Successful."}
   timeout        abort
}

现在它可以打印消息,但是在添加之后,脚本会在登录成功后挂起。

在运行时启用-d选项,看起来它正在尝试匹配"",不确定puts如何导致此问题?或者我在这里犯了什么错误?

编辑: -d输出的最后几行是

expect: does " *********# " (spawn_id exp6) match glob pattern "Password:"? no
"Last login:"? no
"# "? yes
expect: set expect_out(0,string) "# "
expect: set expect_out(spawn_id) "exp6"
expect: set expect_out(buffer) " *********# "
Login Successful too.

expect: does "" (spawn_id exp6) match glob pattern "# "? no

我用 * ** 替换了包含私人信息的内容。我脚本中的下一行是

expect "# "

0 个答案:

没有答案