【问题标题】:Not able to get 'LS' output on SSH using Pexpect无法使用 Pexpect 在 SSH 上获得“LS”输出
【发布时间】:2014-02-19 04:21:40
【问题描述】:

我正在尝试使用 pexpect 连接到 localhost 上的 SSH,并在建立 SSH 会话后尝试列出文件。会话建立,但我没有得到“ls”的输出。我已经能够在 FTP 中做到这一点,但不能使用 SSH,这是代码:

import pexpect
import time
import sys
child=pexpect.spawn('ssh 127.0.0.1')
child.logfile=sys.stdout
child.expect('[P|p]assword')
child.sendline('abcd@123?')
child.expect('Welcome')
print child.before,
print child.after
time.sleep(3)
child.sendline('ls -l')
time.sleep(3)
child.expect('$')
print child.before,
print child.after
child.sendline('logout')
child.close

在这里,我也尝试让进程休眠,但它在 localhost 的 SSH 横幅之间打印“ls -l”。但没有列出文件。请提供一些提示。进一步请建议一些好书或链接,用于深入研究 python 以进行渗透测试。非常感谢...(我将在 12 小时后上线,该睡觉了)

【问题讨论】:

    标签: python ssh pexpect


    【解决方案1】:

    传递给expect() 的模式是正则表达式,而不是文字字符串。所以$ 匹配字符串的结尾,由于 pexpect 的工作方式,它可以在任何地方。

    您可以转义美元符号 - \$ - 或使用 expect_exact(),它采用纯字符串。

    【讨论】: