2012-04-23 36 views
20

Giả sử tôi xác định một nhiệm vụ tầm thường để liệt kê các tập tin trên một máy chủ từ xa:Cách đặt thư mục làm việc cho tác vụ Fabric?

from fabric.api import run, env 

env.use_ssh_config = True 

def list_files(): 
    run('ls') 

Và tôi thực hiện nó với:

fab -H server list_files 

Làm thế nào tôi có thể chỉ định thư mục làm việc cho lệnh Tôi đang chạy , ngoài việc thực hiện:

run('cd /tmp && ls') 

Điều gì không có vẻ rất thành ngữ đối với tôi?

Tuyên bố từ chối trách nhiệm: Tôi đang xem xét Vải lần đầu tiên trong đời và tôi hoàn toàn mới đối với Python.

+1

hãy chắc chắn bạn có một cái nhìn tại [hướng dẫn] (http://docs.fabfile.org/en/1.4.1/tutorial.html), điều này rất câu hỏi được đề cập trong đó. – Morgan

Trả lời

37

Sử dụng Context Manager cd:

from fabric.api import run, env 
from fabric.context_managers import cd 

env.use_ssh_config = True 

def list_files(): 
    with cd('/tmp'): 
     run('ls') 
+1

Nhưng nếu tôi muốn ** tất cả ** lệnh 'run' của tôi chạy trong cùng một thư mục thì sao? Tôi có phải quấn toàn bộ fabfile của mình vào một 'với cd()' không? Không có cái gì giống như 'env.working_dir = '/ my/dir''? – Dotl

Các vấn đề liên quan