【发布时间】:2023-03-13 08:13:02
【问题描述】:
我正在尝试制作一个 python 脚本,该脚本将通过 ssh 在远程机器上运行 bash 脚本,然后解析其输出。 bash 脚本在标准输出中输出大量数据(如 5 兆字节的文本/50k 行),这是一个问题 - 我仅在 ~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)
我很确定问题出在一些内部缓冲区溢出,但是是哪一个以及如何解决呢?
非常感谢您的任何提示!
【问题讨论】: