27

リモートサーバー上のファイルを一覧表示する簡単なタスクを定義するとします。

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はまったく初めてです。

4

2 に答える 2

48

コンテキストマネージャー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')
于 2012-04-23T14:01:35.843 に答える
18

の答えはfabric 2.4.0次のようになります。

from fabric import Connection

conn = Connection(host=HOST_NAME, user=USER_NAME, connect_kwargs={'password': PASSWORD})

with conn.cd('/tmp/'):
    conn.run('ls -la')

これはドキュメントではカバーされていませんが、fabricドキュメントでカバーされていinvokeます

于 2018-12-23T10:38:46.513 に答える