我正在尝试制作一个python脚本,它将通过ssh在远程计算机上运行bash脚本,然后解析其输出。bash脚本在stdout中输出大量数据(例如5兆字节文本/ 5万行),这是一个问题-我只能在大约10%的情况下获得所有数据。在其他90%的情况下,我得到的期望值约为97%,并且看起来总是在最后修剪。这是我的脚本的样子:
import subprocess
import re
import sys
import paramiko
def run_ssh_command(ip, port, username, password, command):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, port, username, password)
stdin, stdout, stderr = ssh.exec_command(command)
output = ''
while not stdout.channel.exit_status_ready():
solo_line = ''
# Print stdout data when available
if stdout.channel.recv_ready():
# Retrieve the first 1024 bytes
solo_line = stdout.channel.recv(2048).
output += solo_line
ssh.close()
return output
我很确定问题出在某些内部缓冲区的溢出中,但是哪一个以及如何解决呢?