Я пытаюсь создать скрипт Python, который запускает скрипт bash на удаленной машине через ssh, а затем анализирует его вывод.Сценарий bash выводит большое количество данных (например, 5 мегабайт текста / 50 тыс. Строк) в стандартный вывод, и здесь возникает проблема - я получаю все данные только в ~ 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
result = run_ssh_command(server_ip, server_port, login, password, 'cat /var/log/somefile')
print "result size: ", len(result)
Я почти уверен, что проблема в переполнении какого-то внутреннего буфера, но какой именно и как это исправить?
Спасибо большоемного за любой совет!