Fabric检查用户对文件/文件夹

时间:2016-05-05 15:58:35

标签: python fabric

os.access('/path/to/folder', os.W_OK)结构中是否有等价物来检查远程文件夹是否具有给定远程用户/组的正确权限?

目前我可以尝试使用with cd进入该文件夹并捕获异常,但我不喜欢这样......

1 个答案:

答案 0 :(得分:1)

出于显而易见的原因,您无法使用os lib;但你可以使用test。我做了一个关于如何使用它的2分钟快速示例。

from fabric.api import env, task, run, sudo as _sudo, settings, hide

env.user = 'vagrant'
env.key_filename = '~/.vagrant/machines/default/virtualbox/private_key'
env.host_string = '127.0.0.1'
env.port = '2222'


def is_file_writable(filepath, sudo=False):
    fn = run if not sudo else _sudo
    with settings(warn_only=True), hide('everything'):
        response = fn('test -w ' + filepath)
        return response.return_code == 0


@task
def sometask():
    print is_file_writable('/etc/sudoers')
    print is_file_writable('/etc/sudoers', sudo=True)

输出:

$ fab sometask
False
True

Done.
Disconnecting from 127.0.0.1:2222... done.