【问题标题】:Is there a way to "expect" and "send" after "interact" command有没有办法在“交互”命令之后“期待”和“发送”
【发布时间】:2011-12-05 22:35:36
【问题描述】:

所以我需要在我的标准输出上输出远程进程,但我还需要能够“收听”它,并在匹配我的关键字后发送命令。

我需要这样的东西(我知道这段代码不正确,它的唯一目的是说明我需要什么)

#!/usr/bin/expect
log_user 0
spawn ssh -o PubkeyAuthentication=no [lindex $argv 0] -n [lindex $argv 1]
expect "Password:" {send "mypassword\r"}
interact
expect "mykeyword" {send "\003\177\015"}

【问题讨论】:

    标签: linux shell tcl expect


    【解决方案1】:

    如果我没记错的话,你可以这样做:

    #!/usr/bin/expect
    log_user 0
    spawn ssh -o PubkeyAuthentication=no [lindex $argv 0] -n [lindex $argv 1]
    expect "Password:" {send "mypassword\r"}
    interact {
         "mykeyword" {
             send "\003\177\015"
             exp_continue
         }
    }
    

    您将要注意的事项和要采取的操作作为参数传递给 interact(就像 expect 一样),最后将响应脚本告诉 exp_continue,以便它继续交互/期待.

    【讨论】:

    • 令人惊讶的是这个答案被接受了,因为显然问题是关于期望 program 发送 mykeyword 并期望发送 \003\177\015program 就好像它是由用户键入的一样。此答案等待 用户 改为键入 mykeyword
    • 在模式产生预期行为之前添加-o-o interact { "mykeyword"
    猜你喜欢
    • 1970-01-01
    • 2019-11-12
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    相关资源
    最近更新 更多