2013-07-17 43 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

回答