我正在使用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()
答案 0 :(得分:1)
您正试图在ssh.exec_command
完成之前下载文件。
你需要等待;最好的方法是从stdout
和/或stderr
阅读EOF
。
我认为这些读取会被阻止,但是因为除非他们完成任何事情,否则你没有别的事可做。我相信EOF
看起来像一个空字符串:""
。