【问题标题】:Python, is it possible to take the pexpect sendline output and add a contion on it?Python,是否可以获取 pexpect sendline 输出并在其上添加一个 contion?
【发布时间】:2013-11-03 09:54:18
【问题描述】:

我有一个问题,我找不到答案。

我使用 Python pexpect 模块通过 ssh 连接到子应用程序,并执行“ls”、“history”等命令。我需要帮助来执行诸如检索发送线输出之类的操作并检查它是否包含特定的字符串链或其他此类操作。 有人可以帮帮我吗?

这是我使用的代码的一个简单示例:

child = pexpect.spawn('ssh -l karaf -p 8101 localhost')
child.logfile = open("/home/user/python_HR/logs.txt", "w")
child.expect('password:')
child.sendline(mypassword)
child.sendline(command1)

这里我需要执行一个“if”来检查 child.sendline(command1) 的结果是否包含字符串chaine“test”

我已经知道如何将所有输出保存在日志文件中。之前和之后的属性也对我没有帮助。 提前谢谢你。

【问题讨论】:

  • 你需要expect()一些东西,比如提示符,然后使用.before属性看看之前打印了什么。

标签: python ssh pexpect


【解决方案1】:

既然你正在点击 EOF,那么你可以有这样的代码:

index = pexpect.expect(['test', pexpect.EOF, pexpect.TIMEOUT])
    if index == 0:                                          
        do_something()
    elif index == 1:
        print(pexpect.before)
    elif index == 1:
        print(pexpect.before)

我希望,如果您期望 EOF,您将能够使用 .before 属性。

或者: 您可以执行命令并将其输出到文件中,然后下载该文件并在本地使用它。

如果您愿意,您可以使用 pexpect.interact() 手动获得控制

【讨论】:

  • 感谢您的快速回答,我很惊讶。您提出的解决方案肯定可以帮助我。我正在尝试一件事,如果我继续使用choice = child.expect('blabla'),那么我检查选择值它也可以工作。问题是如果它没有找到“blabla”,它会生成一个 pexpect.EOF 异常。有没有其他解决方案可以避免出现此异常?
猜你喜欢
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
  • 1970-01-01
  • 2019-11-05
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
相关资源
最近更新 更多