Python 如何在paramiko.recv函数中接收大输出?

Python 如何在paramiko.recv函数中接收大输出?,python,automation,paramiko,Python,Automation,Paramiko,我需要从paramiko中的.recv函数接收完整输出。我试图增加nbyte数,但在我看来,这不是正确的方法。脚本的主要目的是在同一会话中自动执行命令列表。 我这里的主要问题是我不能从shell接收全部输出 环境: python v2.7.14 帕拉米科v2.4.1 我的脚本代码:() 最后我找到了解决方案。我在代码末尾添加了一个While循环,这样它将继续接收输出,直到break语句 While True: output = connection.recv(1024) pr

我需要从paramiko中的.recv函数接收完整输出。我试图增加nbyte数,但在我看来,这不是正确的方法。脚本的主要目的是在同一会话中自动执行命令列表。 我这里的主要问题是我不能从shell接收全部输出

环境:

  • python v2.7.14
  • 帕拉米科v2.4.1
我的脚本代码:()


最后我找到了解决方案。我在代码末尾添加了一个While循环,这样它将继续接收输出,直到break语句

While True:
    output = connection.recv(1024)
    print output
    if "condition" in output:
        break

您可以多次调用
recv
,直到得到一个空输出,这意味着“通道流已关闭”。参考:顺便说一句,您所做的(自动化
ssh
,再加上自动化主机密钥接受)是一个可怕的黑客行为和安全漏洞@谢谢你的回复。我会按照你的建议“多次给recv打电话”,我会让你知道的。@MartinPrikryl谢谢你的帮助。我的环境中有一个中间服务器,这就是我在这里打开两个会话的原因。第一个会话将登录到中间服务器,第二个会话将访问控制器或中间服务器后面的交换机。我知道你在做什么。但是您的实现是不安全和不可靠的。这是我在评论中链接到您的问题的代码。这只能证明你的问题是重复的。所以,请接受你的问题是重复的,而不是重复答案。@MartinPrikryl不要把它当成个人问题。我承认我的问题是重复的。因此,马丁一次又一次地感谢你的帮助,我并不认为这是针对个人的。但我们可以保持堆栈溢出整洁,没有重复的内容。这就是为什么我要求你接受你的问题是重复的。我所说的接受是指真正的行动。您应该会在问题的周围看到相应的按钮。
While True:
    output = connection.recv(1024)
    print output
    if "condition" in output:
        break