Paramiko - sftp.get下载空文件
我正在使用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
看起来会像一个空字符串:""
。