使用ssh代理的Fabric cd()

时间:2013-07-17 12:25:58

标签: python ssh fabric

如何实现在Fabric中使用ssh代理的自定义cd()?

在我的部署脚本中,我打包了run(),sudo(),put(),如上所述实现ssh代理:

from fabric.api import run, sudo, cd

PREFIX = "ssh user@remote:5044 '"

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

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

但正如我所知,为了管理上下文,Fabric的cd()改变了全局变量env.cwd

不喜欢run或sudo,直接执行一些命令。

那么,有没有办法用ssh代理实现cd()?

$ ssh usr@1st-host "ssh usr@2nd-host 'cd pwd;cmd...'"

1 个答案:

答案 0 :(得分:2)

您想使用--user中的fab标记,而不是PREFIX

例如:fab --user=myself abc以用户abc运行命令myself

对于cd,请查看http://docs.fabfile.org/en/1.6/api/core/context_managers.html?highlight=cd#fabric.context_managers.cd