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('# ')
我正在使用 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('# ')