Paramiko - sftp.get下载空文件

2 投票
1 回答
1938 浏览
提问于 2025-04-18 17:43

我正在使用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 个回答

1

你在尝试下载文件,但这个操作还没完成。

你需要等一下;最好的办法是从 stdout 和/或 stderr 读取数据,直到结束。

我觉得这些读取操作会是阻塞的,也就是说在它们完成之前你不能做其他事情,但反正你也没什么别的事情可做,所以这样应该没问题。而且我相信结束标志 EOF 看起来会像一个空字符串:""

撰写回答