2016-11-03 33 views
0

我想使用結構文件創建部署任務。我們有一些時候只有ftp數據或ssh數據。使用ssh密鑰寫入rsync的結構文件

此代碼的工作

def sync_app(): 
local("rsync -rtlv --delete dist/ server:%s" % code_dir) 

但有了這個代碼,每個用戶都必須具有相同的ssh配置文件。所以我想要項目中的數據。在這一刻,我不知道最佳做法,但如果我寫手動數據的代碼中我收到錯誤。我錯了什麼?

def sync_app(): 
local("rsync -rtlv --delete dist/ 'ssh -i /Users/username/.ssh/id_rsa_dploy -p 9600' [email protected]:%s" % code_dir) 
+0

你可以使用'-F'參數'ssh'並將其指向一個臨時的配置文件創建(也許是船與你的項目,然後你將它複製到/ tmp/...),這是與用戶分開的。 –

回答

0

請發表你的錯誤,但我覺得你的問題是由缺乏使用-e標誌引起的。當使用rsync通過ssh使用-e

def sync_app(): 
local("rsync -rtlv " 
     "-e 'ssh -i /Users/username/.ssh/id_rsa_dploy -p 9600' " 
     "--delete dist/ [email protected]:%s" % code_dir) 

https://linux.die.net/man/1/rsync

-e, --rsh=COMMAND 
    This option allows you to choose an alternative remote shell program to use for communication between the local and remote copies of rsync. Typically, rsync is configured to use ssh by default, but you may prefer to use rsh on a local network.