2017-06-24 2 views
3

このコードを実行して、このディレクトリがリモートマシンに存在するかどうかをチェックしていますが、このコードはローカルマシンのディレクトリをチェックしています。リモートマシン上のディレクトリを確認するにはどうすればよいですか?ファブリックを使用してパスが存在するかどうかを確認する

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!" 

答えて

6

files.exists functionを使用できます。

def check_exists(filename): 
    from fabric.contrib import files 
    if files.exists(filename): 
     print('%s exists!' % filename) 

そしてexecuteでそれを呼び出します。

def main(): 
    execute(check_exists, '/path/to/file/on/remote') 
+0

これは私が探していたものを正確にです。ありがとう。 –

2

理由だけではなく、keep it simply stupidとして:

from fabric.contrib.files import exists 

def foo(): 
    if exists('/path/to/remote/file', use_sudo=True): 
     # do something... 
+0

は 'local'でそれを使う方法はありますか? – ignivs

+0

@ignivs nope。リモートホストでの使用を目的としています。https://github.com/fabric/fabric/blob/master/fabric/contrib/files.py#L16 – andi

+0

@andi:あなたはスニペットをOPのリモートに接続しませんenvは実行時にコードで設定されます。コードでenvを設定した場合は、envへの変更を取得するために 'execute'をラップする必要があります。 – 2ps

関連する問題