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