使用paramiko invoke_shell()执行的命令输出是分页的(获取" - 更多 - "在recv中)

时间:2015-08-13 22:19:35

标签: python ssh paramiko channel

我使用XYZ

通过频道发送了一个sendall()命令
channel = ssh.invoke_shell()
channel.sendall('XYZ\n')
response = channel.recv(2000)

我应该把整个输出放在那里,但后来我注意到在我收到的输出的最后一行中,有一个" - 更多 - "在末尾。就像你使用“少”时所获得的一样。命令。

因此,通道仍在等待更多输出,因为缓冲区不为空(预期输出更多),并且命令期望我按 SPACE 显示更多输出。

频道永远等待。

如何一次性获得整个输出?我不希望那样" - 更多 - "。

增加缓冲区大小没有区别。

1 个答案:

答案 0 :(得分:1)

使用exec_command,而不是invoke_shell + sendall

invoke_shell(使用默认参数)模拟交互式80x24终端。是什么让你执行的命令做了像分页这样的花哨的东西。

def invoke_shell(self, term='vt100', width=80, height=24, width_pixels=0,
                 height_pixels=0):

exec_command(使用默认参数,即get_pty=False)使用非交互式终端。应该做什么命令(如果实施得当)避免做分页。

def exec_command(self, command, bufsize=-1, timeout=None, get_pty=False):