【问题标题】:Pexpect process dies instead of sending commandPexpect 进程死亡而不是发送命令
【发布时间】:2019-07-29 12:40:42
【问题描述】:

所以,我正在尝试构建一个打开 Apache Karaf 并自动安装一些功能的 python 脚本。我尝试过使用 Subprocess 的 Popen,但发现它非常复杂。有人建议我使用 pexpect 库。

到目前为止,我想出了这个:

karaf = "bash /home/karaf_test/bin/karaf"
p = pexpect.spawn(karaf)
p.logfile = p.stdout.buffer
p.expect("root", timeout=10)
p.sendline(feature_install)

Karaf 的子shell 正确打开,并且 feature_install 字符串似乎通过了,但是进程在没有实际执行命令的情况下立即终止。 There's a screenshot for clarity.

我查看了文档,但一切似乎都很好,我不知道为什么它不会执行。我尝试运行 send() 而不是 sendline() 无济于事。如果有人对此有任何建议,我将不胜感激。

【问题讨论】:

标签: python subprocess pexpect


【解决方案1】:

p.expect("root", timeout=10) 期望模式不在字符串中。所以像这样更改你的代码

p.expect(".*@.*()>",timeout=10)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-10
    • 2018-02-22
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 2013-12-12
    相关资源
    最近更新 更多