如何在 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...'"