如何实现在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...'"
答案 0 :(得分:2)
您想使用--user
中的fab
标记,而不是PREFIX
。
例如:fab --user=myself abc
以用户abc
运行命令myself
。