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

how to receive large output in paramiko .recv function?

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

的完整输出

环境:

我的脚本代码:()

#!/usr/bin/env python
import sys,os,time
import paramiko

user = raw_input("Enter your username please:  ")
upassword = getpass.getpass()
ip = "172.x.x.x"
username = "ikxxxx"
password = "xxxgdxx"
ofile = open("ipsadd.csv", "r")


def sshConnection(ip):
   ssh = paramiko.SSHClient()
   ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
   ssh.connect(ip, username=user, password=upassword)
   connection = ssh.invoke_shell()


for line in ofile:
    hostname = line.split(",")[0].strip()
    print "\n\n" 
    print "Configuration running on: " + hostname
    host = line.split(",")[1].strip()
    print "IP: " + host
    print "*" * 40

    connection.send("ssh " + username + "@" + host + "\n")
    time.sleep(1)
    connection.send("\n")
    time.sleep(2)
    connection.send("yes" + "\n")
    time.sleep(2)
    connection.send(password + "\n")
    time.sleep(1)
    connection.send("screen-length 0 temporary" + "\n")
    time.sleep(2)
    connection.send("clear alarm  al no-trap" + "\n")
    time.sleep(2)
    connection.send("Y\n")
    connection.send("display device\n")
    connection.send("display temperature\n")
    connection.send("display device pic-status\n")
    connection.send("display power\n")
    connection.send("display health\n")
    connection.send("display cpu-usage\n")
    connection.send("display memory-usage\n")
    connection.send("display alarm all\n")
    connection.send("display switchover state\n")
    connection.send("display startup\n")
    connection.send("display version\n")
    connection.send("display interface brief\n")
    connection.send("display isis peer\n")
    connection.send("display isis peer verbose\n")
    connection.send("display bgp vpnv4 all peer\n")
    connection.send("display bgp vpn4 all peer verbose\n")
    connection.send("display bgp peer\n")
    connection.send("display current-configuration\n")
    time.sleep(1)
    connection.send("q\n")
    output = connection.recv(999999)
    print output
    break


  sshConnection("179.x.x.x")

最后我发现 solution.I 在我的代码末尾添加了一个 While 循环,因此它将继续接收输出,直到出现 break 语句。

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