【问题标题】:How do you get pexpect to trigger on process.expect("$") for the linux command line prompt?您如何让 pexpect 在 linux 命令行提示符的 process.expect("$") 上触发?
【发布时间】:2020-06-12 21:11:23
【问题描述】:

我在检测 Linux 命令提示符的"$" 时遇到问题。为了更好地了解我正在努力完成的工作:

我想触发我的 pexpect 的示例命令行提示:

testcomp@testcomp-desktop:~$

我的 pexpect 代码示例:

child.expect(['$',pexpect.TIMEOUT])

测试后的结果是它选择了pexpect.TIMEOUT,即使提示在那里。我还尝试了"$" 的几种不同变体,例如"\$""~$"

【问题讨论】:

  • @Asocia 如果你不能指望它那么有没有办法验证命令提示符是否打印?
  • 第一:$在解析为正则表达式时匹配行尾;它与美元符号不匹配。 [$] 应该可以工作; \$ 是否确实取决于您放入的字符串类型。
  • 第二:我们真的需要minimal reproducible example 来知道提示是否应该被看到。请将您问题中的代码扩展为一个可运行的示例,应该能够匹配提示(可能通过产生类似 bash -l -i 的内容来实例化 child
  • @Charles Duffy,你是对的 [$] 表达式确实有效。谢谢!

标签: python linux pexpect


【解决方案1】:

仅供参考,如果您想通过控制台连接到 Linux 机器(我使用的是 minicom),这是应该可以工作的代码。上面的cmets中描述的是使用'[$]'来检测Linux命令行提示符,看起来效果不错。

child = pexpect.spawn("minicom -b 115200 -o -D /dev/ttyUSB0")
check = child.expect(["login",'[$]'])
if(check == 0):
    child.sendline(username)
    child.sendline(password)
else:
    child.sendline("\r")

【讨论】:

    猜你喜欢
    • 2016-09-20
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 2014-12-26
    • 1970-01-01
    相关资源
    最近更新 更多