我是 Fabric 的新手,我试图 cd 进入我没有权限的目录,所以我正在使用 sudo
。 (目录的权限是drwx------,即700)
我正在使用 Fabric 0.9.7。
我试过这个:
from fabric.api import run, env
from fabric.context_managers import cd
env.hosts = [ '1.2.3.4' ]
env.user = 'username'
def test():
run('sudo cd /my/dir')
run('ls')
但这给了我“对不起,你必须有一个 tty 才能运行 sudo”,这是可以理解的。我也试过这个:
剪断:
def test():
with cd('/my/dir'):
run('ls')
但这会返回“权限被拒绝”,再次可以理解。
简而言之,我如何在 Fabric 中“
sudo cd
”? 最佳答案
这是因为 cd
是一个 shell 内置命令,而不是可以使用 sudo
运行的实际程序。您使用 with cd(...):
走在正确的轨道上。尝试类似:
with cd('/my/dir'):
sudo('ls')
我认为这会奏效,尽管不可否认,我自己还没有尝试过。这是因为
cd
上下文管理器的工作方式是将 cd <dirname> &&
预先添加到使用 run()
或 sudo()
运行的任何命令。关于python - sudo cd 进入带有 Fabric 的目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13458478/