检查路径是否存在使用Fabric

Saq*_*bal 6 python ubuntu fabric

我正在运行此代码以检查此目录是否存在于远程计算机上,但此代码正在检查本地计算机上的目录.如何验证远程计算机上的目录?

rom fabric.api import run, sudo, env
import os

env.hosts = ['remote_server']
env.user = 'ubuntu'
env.key_filename = '/home/ubuntu/ubuntu16-multi.pem'


def Directory_Check():
  DIR_1="/home/ubuntu/test-dir"
  if os.path.exists(DIR_1):
    print "Directory Exist!"
  else:
    print "Directory Does Not Exist!"
Run Code Online (Sandbox Code Playgroud)

2ps*_*2ps 12

你可以使用这个files.exists功能.

def check_exists(filename):
    from fabric.contrib import files
    if files.exists(filename):
        print('%s exists!' % filename)
Run Code Online (Sandbox Code Playgroud)

并称之为execute.

def main():
    execute(check_exists, '/path/to/file/on/remote')
Run Code Online (Sandbox Code Playgroud)


Mik*_*keL 11

尽管接受的答案对fabric ver 1有效,但对于在寻找相同内容但对于fabric2时点击此线程的人:

exists方法 fromfabric.contrib.files被移动到patchwork.files了一个小的签名更改,所以你可以像这样使用它:

from fabric2 import Connection
from patchwork.files import exists

conn = Connection('host')
if exists(conn, SOME_REMOTE_DIR):
   do_something()
Run Code Online (Sandbox Code Playgroud)


and*_*abs 8

为什么keep it simply stupid不如:

from fabric.contrib.files import exists

def foo():
    if exists('/path/to/remote/file', use_sudo=True):
      # do something...
Run Code Online (Sandbox Code Playgroud)