我是一个期待并从某人的剧本中学习的新手。在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 "# "