我有一个命令XYZ
使用sendall()
通过一个频道发送
channel = ssh.invoke_shell()
channel.sendall('XYZ\n')
response = channel.recv(2000)
我应该把整个输出放在那里,但后来我注意到在我收到的输出的最后一行中,最后有一个“--more--”。就像你使用'less'命令时得到的那个。
因此,通道仍在等待更多输出,因为缓冲区不为空(预期输出更多),并且命令期望我按SPACE显示更多输出。
该频道只是永远等待。
如何一次性获得整个输出?我不想要“ - 更多 - ”。
增加缓冲区大小没有区别。
使用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):