2012-04-23 22 views
20

Zakładając, że określenie trywialne zadanie do listy plików na zdalnym serwerze:Jak ustawić katalog roboczy dla zadania Fabric?

from fabric.api import run, env 

env.use_ssh_config = True 

def list_files(): 
    run('ls') 

A ja go wykonać z:

fab -H server list_files 

Jak mogę określić katalog roboczy dla polecenia biegnę , inne niż robienie:

run('cd /tmp && ls') 

Co nie wygląda dla mnie bardzo idiomatycznie?

Nota prawna: Po raz pierwszy w życiu patrzę na Fabric i jestem całkowicie nowy w Pythonie.

+1

upewnij się przyjrzeć z [Tutorial] (http://docs.fabfile.org/en/1.4.1/tutorial.html), to bardzo Pytanie jest tam omówione. – Morgan

Odpowiedz

37

Użyj 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

Ale co jeśli chcę ** wszystkie ** moich komend 'run' uruchomić w tym samym katalogu? Czy będę musiał owinąć cały plik fabfile w 'with cd()'? Czy nie ma czegoś takiego jak 'env.working_dir = '/ my/dir''? – Dotl

Powiązane problemy