您好我在Python中使用pexpect来读取ssh设备信息。
expObject = pexpect.spawn('/usr/bin/ssh %s@%s' % (username, device))
expObject.sendline(password)
在给出密码后,我显示了一些设备信息,在命令提示符下,它会按任意键继续;一旦我按任意键,信息就会消失。
我使用下面的逻辑来捕获像show version
expObject.expect(CLI_PROMPT)
data = expObject.before
那么如何在输入密码之后以及在使用“expObject”按任意键进行复制之前捕获显示的数据。
答案 0 :(得分:2)
我有一个类似的问题,我需要逐行处理文本输出。为了实现这一点,你必须要知道pexpect配置regexp使得。* pattern包含换行符,所以代替。*你必须使用[^ \ n] *。这样的事情应该适合你的情况:
child = pexpect.spawn('ssh command goes here')
child.expect('password prompt text\r\n')
child.sendline(password)
data = ""
while True:
i = child.expect(['press any key to continue', '[^\n]*\r\n'])
if i == 0:
break
data += child.before
print data
这应该与输出以下内容的命令一起使用:
password propt text
<start of data captured> - 1st line
a second line
a third line
last line <end of data that will be captured>
press any key to continue
答案 1 :(得分:1)
http://ubuntuforums.org/showthread.php?t=220139
对于您想要做的事情来说,它是一本很好的指南。我怀疑你实际上并不需要使用expect,只需使用ssh命令执行和ssh键即可完成所需的一切。例如:
hostA:~ jdizzle$ ssh hostB hostname
hostB
以下是关于ssh键的另一个教程:http://pkeck.myweb.uga.edu/ssh/