2013-07-17 40 views
-2

如何實現在Fabric中使用ssh代理的自定義cd()?使用ssh代理的fabric cd()

在我的部署腳本,我打包的run(),須藤(),把()像上面實現SSH代理:

from fabric.api import run, sudo, cd 

PREFIX = "ssh [email protected]:5044 '" 

def custom_run(cmd): 
    new_cmd = PREFIX + cmd + "'" 
    run(new_cmd) 

def custom_sudo(cmd): 
    new_cmd = PREFIX + cmd + "'" 
    sudo(new_cmd) 

不過據我所知,管理背景下,面料的CD()改變全局變量env.cwd

不像run或sudo,直接執行一些命令。

那麼,有沒有什麼辦法可以用ssh代理實現cd()?

$ ssh [email protected] "ssh [email protected] 'cd pwd;cmd...'" 
+0

織物將CD以執行命令之前在env.cwd目錄,所以我不明白你想解決什麼問題。 –

+0

請解釋你正在嘗試解決什麼問題。在我看來,你正試圖在織物中重新實現織物,這是沒有意義的。 –

+0

對不起我的錯誤! PREFIX是''ssh user @ remote:5044'「''user'remote:5044',所以我的問題是如何通過ssh和excute命令重新實現fabric cd()進入第三個主機的目錄,而不是目標主機指定env.host。 – shymonk

回答