0

我是新来的期待和学习某人的剧本。在 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 "# "
4

0 回答 0