用paramiko invoke_shell()执行的命令输出是分页的(在recv中得到“--more--”)

问题描述 投票:0回答:1

我有一个命令XYZ使用sendall()通过一个频道发送

channel = ssh.invoke_shell()
channel.sendall('XYZ\n')
response = channel.recv(2000)

我应该把整个输出放在那里,但后来我注意到在我收到的输出的最后一行中,最后有一个“--more--”。就像你使用'less'命令时得到的那个。

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

该频道只是永远等待。

如何一次性获得整个输出?我不想要“ - 更多 - ”。

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

python ssh paramiko channel
1个回答
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):
© www.soinside.com 2019 - 2024. All rights reserved.