0

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

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

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

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”

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

4

1 回答 1

0

由于您正在点击 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() 手动获得控制权

于 2013-10-24T18:29:42.887 回答