Paramiko - sftp.get下载空白文件

时间:2014-08-18 21:02:55

标签: python paramiko

我正在使用Paramiko通过SSH连接服务器,运行命令生成报告,然后将报告下载到本地计算机。一切似乎没有错误,但在我的本地计算机上生成的文件是空白的。我正在使用Python 2.7和最新版本的Paramiko。我正在尝试下载的文件是.csv。我已经验证该文件包含数据服务器端。

我正在使用的代码如下:

try:
    ssh = paramiko.SSHClient()

    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    ssh.connect(hostname, username=user_name, key_filename=key_file)
except:
    print 'error connecting'

try:
    stdin, stdout, stderr  = ssh.exec_command(report_cmd)
except:
    print 'error generating report'

try:

    sftp = ssh.open_sftp()  
    sftp.get(source_str, dest_str)

except:
    print 'failed to DL file' + str(sys.exc_info())

ssh.close()

1 个答案:

答案 0 :(得分:1)

您正试图在ssh.exec_command完成之前下载文件。

你需要等待;最好的方法是从stdout和/或stderr阅读EOF

我认为这些读取会被阻止,但是因为除非他们完成任何事情,否则你没有别的事可做。我相信EOF看起来像一个空字符串:""