【问题标题】:python: How to run command on local machine from an EC2 instancepython:如何从 EC2 实例在本地机器上运行命令
【发布时间】:2013-10-30 17:24:08
【问题描述】:

我正在尝试使用 python 脚本自动化从生产转储创建 postgres 数据库的过程。我在托管 RoR 应用服务器的 EC2 实例上运行此脚本。

我可以使用 Psychopg 创建数据库。但在同一个脚本中,我想执行以下操作:

- do a deploy using capistrano from local machine

我在研究中遇到了 paramiko - SSHClient。我觉得可以用。但我不确定如何从 EC2 实例通过 SSH 连接到本地机器。 我找到了我的 IP(比如 a.b.c.d)并从 EC2 实例中尝试了ssh a.b.c.d,但它说:

ssh: connect to host a.b.c.d port 22: Connection refused

所以我的问题是: - 如果这个方法(使用 paramiko)是正确的,我如何设置从 EC2 实例到我的本地机器的 ssh 连接 或者 如果 paramiko 无法实现这一点,我该如何从 EC2 实例上的脚本运行部署

【问题讨论】:

  • 您可以设置反向 ssh 隧道(google it ;))
  • @Puciek:谢谢。我试试这个

标签: python amazon-ec2


【解决方案1】:

首先,paramiko 有点低级,你可以尝试使用Fabric,它会让很多事情变得更容易。

其次,检查你的本地机器是否是

  • 可从 Internet 访问,即具有公共 IP 地址
  • 运行 SSH(假设您运行*NIX-like OS,运行ps -ef | grep sshd, 如果你看到一个进程匹配,那么你应该能够连接)

那么,如果您想在 EC2 实例上自动创建 postgres 数据库 ,为什么需要从它到本地计算机的连接。逆转这个过程不是更合乎逻辑吗? IE。 SSH 本地机器到 EC2 实例。

【讨论】:

  • 感谢您提供非常有用的答案。关于您的第三点:当我开始编写脚本时,我没有意识到我必须添加部署功能。由于 EC2 中需要数据库,因此我在 EC2 中编写了脚本。令人惊讶的是,相同的脚本在我的本地机器上不起作用。不知道为什么
  • 我想是因为您的本地机器不运行 SSH?您使用的是哪个操作系统?
  • 我刚刚使用您提到的命令进行了检查。它显示正在运行的进程。我正在使用 ubuntu 12.04
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
  • 2021-03-14
  • 2019-02-13
  • 1970-01-01
  • 2017-04-04
  • 2018-08-30
  • 1970-01-01
相关资源
最近更新 更多