2012-04-23 45 views
20

假設我定義了一個簡單的任務列出遠程服務器上的文件:如何設置Fabric任務的工作目錄?

from fabric.api import run, env 

env.use_ssh_config = True 

def list_files(): 
    run('ls') 

和我一起執行:

fab -H server list_files 

我如何指定我運行命令的工作目錄,除了做:

run('cd /tmp && ls') 

這不看起來很地道我?

聲明:我在我的生活中第一次看Fabric,而我完全是Python的新手。

+1

確保你看看在[教程](http://docs.fabfile.org/en/1.4.1/tutorial.html),這很問題包含在那裏。 – Morgan 2012-04-23 17:07:56

回答

37

使用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

但是,如果我想**所有**的「run」命令在同一個目錄中運行,該怎麼辦?我將不得不將我的整個fabfile包裝在'with cd()'中?有沒有像'env.working_dir ='/ my/dir''? – Dotl 2017-10-18 10:04:17

相關問題