【问题标题】:configure ec2 to run a script to download files from a sftp site?配置 ec2 以运行脚本以从 sftp 站点下载文件?
【发布时间】:2026-02-17 05:20:02
【问题描述】:

我想配置EC2 instance,这样我就可以运行脚本(可能按计划)从 sftp 站点下载文件。做一些研究,我找到了连接到服务器的代码示例(见下文)。我不确定以下代码是否适用于 sftp (ssh ftp),我需要配置 ssh 吗?我如何在EC2 instance 中运行此代码? 我可以将它上传到 s3 并从 ec2 指向它以在 some schedule 上运行它吗?

#!/usr/bin/expect
export PASSWORD="*******"
expect -c 'spawn sftp uname@ftpsite.com; 
expect "*Password: ";
send "$env(PASSWORD)\r";
expect "sftp>";
send "get some_file.txt \r";

【问题讨论】:

  • 您可以在实例上设置cron任务以按计划运行。

标签: amazon-web-services amazon-ec2 cron


【解决方案1】:

您可以通过以下方式运行此代码

  1. connect your ec2 through ssh.
  • 首先使用安全性允许入站 ssh 流量到您的实例 端口 22 上的组
  • 第二次找出实例的公网 IP

注意:-确保您在启动实例时已创建并下载了 .pem 文件。

  • 然后使用此命令通过 ssh 连接到您的实例 ssh ec2-user@your-public-ip -i /path/to/.pem/file
  • 一旦您登录到您的 ec2 实例,您就可以运行那些 命令。

注意:- 这是连接到您的 ec2 实例的一种方式,您也可以通过 aws 控制台连接到 ec2,如果您不想键入所有 ssh 命令,请使用浏览器连接。(只是一个流畅的过程)但即使您选择这种方式连接到您的 ec2,仍然需要配置您的安全组以允许 ssh 流量。

  1. Now what if you want to schedule this?

在 Linux 中,我们使用cron 守护进程来调度命令。

crontab 是您希望定期运行的命令列表,也是用于管理该列表的命令的名称。 crontab 代表“cron table”,因为它使用作业调度程序 cron 来执行任务

crontab -e //to make entries in cron
crontab -l //to list cron jobs

Crontab 格式

MIN HOUR DOM MON DOW CMD

时间间隔由数字和运算符表示,这些运算符代替 Cron 作业的 crontab 行中的每个星号。星号从左到右分别代表:

  • 分钟指定为 0 到 59 之间的数字。
  • 小时数指定为 0 到 23 之间的数字。
  • 一个月中的几天,指定为从 1 到 31 的数字。
  • 月份指定为从 1 到 12 的数字。
  • 星期几,指定为从 0 到 7 的数字,包括星期日 表示为 0 和 7 中的一个/两个。

在编辑器中输入(示例)

30 08 10 06 * /home/ramesh/full-backup.sh

这将在 6 月 10 日上午 8:30 执行完整备份 shell 脚本(完整备份)。

有关示例和允许的值cron examples

,请参见此处

【讨论】:

  • 能否请您为cron添加一两句话或如何按时运行?
  • @JatinMehrotra - 谢谢,所以把它放在 cron 中。我会 ssh 进入我的 ec2 实例,然后执行一些命令来创建/编辑 cron 对吗?为此,这个脚本不需要保存在某个地方吗
  • 它应该保存在您的系统上。以便系统知道在哪里可以找到此脚本。
  • 更新了我的答案以获得更好的解释,如果它解决了您的问题,请接受它作为您问题的解决方案,以便将来对其他人有所帮助:)
  • 如果它的 ec2 实例基于 linux ami,当你 ssh 时,只需使用任何编辑器,如 nano 或 vim.cd 到所需目录为 cd ~,然后 vim script.sh,然后输入你的脚本,将其保存为 vim 的 :wq! 和 nano ctrl-x,这样它就可以保存到您的 ec2 实例中。