我正在使用Pexpect在服务器上远程运行命令并将输出保存在文件中。但是,它不会保存整个输出,因为它会因--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
答案 0 :(得分:1)
不确定您正在运行什么命令但通常可以在看到--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
答案 1 :(得分:0)
我发现了另一个答案-只需在实际命令之前执行以下命令即可。
Select
Country=o.Country
,Year= o.Year
,Month= o.Month
,[Distinct Count]=Count(distinct custid)
,Sales= sum(o.Sales)
From FactOrders O
where
o.OrderType in (1,2,3)
and o.Sales <> 0 and o.Points <> 0 -- because, -10 + 10 = 0
Group by
o.Country, o.Year, o.Month
在那之后,假设我输入了诸如terminal length 0
之类的命令。然后,这将显示整个输出。您不需要一次又一次地按Enter键。
show ip interface