使用Pexpect无法在SSH上获得“LS”输出

时间:2014-02-17 18:09:34

标签: python ssh pexpect

我正在尝试使用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'。但是没有列出文件。 Plz提供了一些提示。进一步说明了一些好的书或链接,用于深入研究python以用于测试目的。非常感谢...(我将在12小时后上线,是时候睡觉了)

1 个答案:

答案 0 :(得分:3)

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

你可以逃避美元符号 - \$ - 或使用expect_exact(),它采用普通字符串。

相关问题