【发布时间】:2021-05-06 16:36:43
【问题描述】:
抱歉,如果这是一个非常简单的问题,但我在 Google 上找不到任何信息可以提供帮助。
我有一个 Amazon EC2 服务器设置,它收集由一些科学仪器流式传输到服务器的数据并将其保存为 .csv 文件。
我想从我的(远程)笔记本电脑上运行的 Python 脚本访问这些 .csv 文件。这可能吗?
我的理解是我需要我的 Python 代码“登录”到服务器,然后将文件下载到本地目录。
我们将不胜感激地收到任何帮助/指点。
更新 1
我安装了 paramiko 并尝试了下面的代码
import paramiko
paramiko.util.log_to_file("D:/Temp/aws/paramiko.log")
# Open a transport
host,port = "##.##.###.##",##
transport = paramiko.Transport((host,port))
# Auth
username,password = "username","password"
transport.connect(None,username,password)
但是,我收到以下错误:
SSHException: Error reading SSH protocol banner
日志文件如下所示:
DEB [20210202-17:54:47.282] thr=1 paramiko.transport: starting thread (client mode): 0x5202388
DEB [20210202-17:54:47.283] thr=1 paramiko.transport: Local version/idstring: SSH-2.0-paramiko_2.7.2
DEB [20210202-17:54:47.384] thr=1 paramiko.transport: Banner: 220-FileZilla Server 0.9.60 beta
DEB [20210202-17:54:47.384] thr=1 paramiko.transport: Banner: 220-written by Tim Kosse (tim.kosse@filezilla-project.org)
DEB [20210202-17:54:47.384] thr=1 paramiko.transport: Banner: 220 Please visit https://filezilla-project.org/
DEB [20210202-17:54:48.003] thr=1 paramiko.transport: Banner: 500 Syntax error, command unrecognized.
ERR [20210202-17:54:50.019] thr=1 paramiko.transport: Exception: Error reading SSH protocol banner
ERR [20210202-17:54:50.026] thr=1 paramiko.transport: Traceback (most recent call last):
ERR [20210202-17:54:50.027] thr=1 paramiko.transport: File "C:\Users\caira\Anaconda3\lib\site-packages\paramiko\transport.py", line 2211, in _check_banner
ERR [20210202-17:54:50.027] thr=1 paramiko.transport: buf = self.packetizer.readline(timeout)
ERR [20210202-17:54:50.027] thr=1 paramiko.transport: File "C:\Users\caira\Anaconda3\lib\site-packages\paramiko\packet.py", line 380, in readline
ERR [20210202-17:54:50.027] thr=1 paramiko.transport: buf += self._read_timeout(timeout)
ERR [20210202-17:54:50.027] thr=1 paramiko.transport: File "C:\Users\caira\Anaconda3\lib\site-packages\paramiko\packet.py", line 622, in _read_timeout
ERR [20210202-17:54:50.028] thr=1 paramiko.transport: raise socket.timeout()
ERR [20210202-17:54:50.028] thr=1 paramiko.transport: socket.timeout
ERR [20210202-17:54:50.028] thr=1 paramiko.transport:
ERR [20210202-17:54:50.028] thr=1 paramiko.transport: During handling of the above exception, another exception occurred:
ERR [20210202-17:54:50.028] thr=1 paramiko.transport:
ERR [20210202-17:54:50.029] thr=1 paramiko.transport: Traceback (most recent call last):
ERR [20210202-17:54:50.029] thr=1 paramiko.transport: File "C:\Users\caira\Anaconda3\lib\site-packages\paramiko\transport.py", line 2039, in run
ERR [20210202-17:54:50.029] thr=1 paramiko.transport: self._check_banner()
ERR [20210202-17:54:50.029] thr=1 paramiko.transport: File "C:\Users\caira\Anaconda3\lib\site-packages\paramiko\transport.py", line 2216, in _check_banner
ERR [20210202-17:54:50.029] thr=1 paramiko.transport: "Error reading SSH protocol banner" + str(e)
ERR [20210202-17:54:50.029] thr=1 paramiko.transport: paramiko.ssh_exception.SSHException: Error reading SSH protocol banner
ERR [20210202-17:54:50.029] thr=1 paramiko.transport:
我是否在做一些明显错误的事情?
我应该改用“公共 IPv4 DNS”吗? => ec2-##-##-###-##.us-east-2.compute.amazonaws.com
我不确定我上面的用户名应该是完整的电子邮件地址还是较短的用户名。
【问题讨论】:
-
建议: 在 EC2 实例上使用脚本定期将数据复制到 Amazon S3 存储桶(例如使用
aws s3 sync命令)可能更简单。然后,您可以轻松地从另一台计算机检索该数据。 -
我创建了一个 s3 存储桶并让我的 ec2 使用以下代码将文件上传到存储桶:aws s3 cp C:\EltekGateway\details.txt s3://######- s3-bucket - 但是我如何让这段代码每 24 小时运行一次?
-
在 Linux 上,您可以使用
cron定期运行脚本。在 Windows 上,您可以使用计划任务。
标签: python amazon-web-services csv amazon-ec2 download