如何使用Fabric2.x检查路径是否存在

时间:2018-11-23 08:50:17

标签: python python-3.x fabric

我正在使用Fabric2版本,但没有看到它中存在用于检查远程服务器中是否存在文件夹路径的方法。请让我知道如何在Fabric 2 http://docs.fabfile.org/en/stable/中实现这一目标。

我看到了类似的问题Check If Path Exists Using Fabric,但这是针对Fabric 1.x版本的

4 个答案:

答案 0 :(得分:3)

folder = '/path/to/folder'
    if c.run('test -d {}'.format(folder), warn=True).failed:
        c.run('mkdir {}'.format(folder))

答案 1 :(得分:0)

嗨,这并不困难,您必须使用传统的python代码来检查路径是否已经存在。

from pathlib import Path
from fabric import Connection as connection, task
import os


@task
def deploy(ctx):
    parent_deploy_dir = '/var/www'
    deploy_dir ='/var/www/my_folder'
    host = 'REMOTE_HOST'
    user = 'USER'
    with connection(host=host, user=user) as c:
                with c.cd(parent_deploy_dir):
                if not os.path.isdir(Path(deploy_dir)):
                    c.run('mkdir -p ' + deploy_dir)

答案 2 :(得分:0)

exists中的

fabric.contrib.files方法更改为patchwork.files并进行了小的签名更改,因此您可以像这样使用它:

from fabric2 import Connection
from patchwork.files import exists

conn = Connection('host')
if exists(conn, SOME_REMOTE_DIR):
   do_something()

答案 3 :(得分:0)

下面的代码用于检查文件(-f)的存在,只需更改为'-d'即可检查目录的存在。

>
from fabric import Connection
c = Connection(host="host")
if c.run('test -f /opt/mydata/myfile', warn=True).failed:
   do.thing()

您可以在下面的Fabric 2文档中找到它:
https://docs.fabfile.org/en/2.5/getting-started.html?highlight=failed#bringing-it-all-together