2016-05-05 5 views
0

Существует ли эквивалент в ткани для os.access('/path/to/folder', os.W_OK), чтобы проверить, имеет ли удаленная папка правильные разрешения для удаленного пользователя/группы?У пользователя проверки ткани есть разрешения на файл/папку

В настоящее время я мог бы попытаться попасть в папку с with cd и отлов исключения, но я не люблю этот путь ...

ответ

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.