我是 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/

10-13 03:41
查看更多