Python Pexpect full output 未保存(如何处理“--More--”提示?)

Python Pexpect full output is not saved (How to deal with the "--More--" prompt?)

我正在使用 Pexpect 在服务器上远程 运行 命令并将输出保存在文件中。但是,它不会保存整个输出,因为它是 t运行cated due to --More-- 。有没有办法避免--More--,让整个输出保存在输出文件中?

我试过使用child.setwinsize(1000,1000),但没有解决问题。

当前代码:

import pexpect
import time

child = pexpect.spawn('ssh username@ip_address')
time.sleep(1)

child.sendline('password')
time.sleep(1)

child.logfile = open("output.txt", "w")
child.sendline('command')
child.expect(pexpect.EOF)

print child.before, child.after
child.close

不确定你是什么命令 运行 但通常你可以在看到 --More-- 提示时按 SPACE。例如:

import pexpect, sys

child = pexpect.spawn('more /etc/services')
child.logfile_read = sys.stdout

patterns = ['--More--', pexpect.EOF]
while True:
    ret = child.expect(patterns)
    if ret == 0:
        child.send(' ')
    elif ret == 1:
        break

我找到了另一个答案 - 只需在实际命令之前执行以下命令即可。

terminal length 0

之后假设我输入了一些命令,如 show ip interface。然后,这将显示整个输出。您无需一次又一次地按回车键。作为,

child.sendline('terminal length 0')   
child.expect('# ')    
child.sendline('show ip interface')   #write your command here
child.expect('# ')