2013-10-30 101 views
0

我試圖自動化使用python腳本從生產轉儲創建postgres數據庫的過程。我在承載RoR應用服務器的EC2實例上運行此腳本。python:如何從EC2實例在本地計算機上運行命令

我能夠使用psychopg創建數據庫。但在同一腳本中,我想要做以下事情:

- do a deploy using capistrano from local machine 

我在我的研究中遇到了paramiko - SSHClient。我認爲它可以使用。但我不知道如何從EC2實例到我的本地機器進行SSH連接。 我發現我的IP(說ABCD)和EC2實例試圖ssh a.b.c.d,但它說:

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

所以我的問題是: - 如果此方法(使用的paramiko)是正確的,我怎麼能成立從EC2實例ssh連接到我的本地機器 OR 如果的paramiko不能做到這一點,我如何從我的腳本運行的部署是在EC2實例

+0

你可以設置反向ssh隧道(google it;)) –

+0

@Puciek:謝謝。我會嘗試這個 – nish

回答

1

對於一個,的paramiko是有點低級別的,你可以嘗試使用Fabric,它會讓很多事情變得更容易。

其次,檢查本地計算機是否是

  • 從Internet訪問,即有
  • 運行SSH(假設你運行* NIX樣的操作系統,運行ps -ef | grep sshd, 如果你看到的公共IP地址一個進程匹配,那麼你應該能夠連接)

然後,如果你想上一個 EC2實例自動執行的Postgres數據庫創建,爲什麼你需要一個CONNEC從它到你的本地機器。扭轉這一過程不是更合乎邏輯嗎?即SSH 本地機器到EC2實例。

+0

謝謝你的一個非常有用的答案。關於你的第三點:當我開始編寫腳本時,我沒有意識到我將不得不添加部署功能。由於數據庫在EC2中是必需的,因此我在EC2中編寫了腳本。令人驚訝的是,同樣的腳本在我的本地機器上工作。不知道爲什麼 – nish

+0

原因您的本地計算機不運行SSH我想?你在使用哪種操作系統? – favoretti

+0

我剛剛使用你提到的命令進行了檢查。它顯示正在運行的進程我使用的是Ubuntu 12.04 – nish

相關問題