2012-01-10 12 views
1

リモートマシン上でファブリックメソッドをdjangoで呼び出す必要があります。私は、ユーザーがリモートマシンのホスト名を取得してリクエストを送信したときを意味します。このような 何か:djangoでリモートファブリックメソッドを呼び出す方法

def get_hostname(request): 
    hostname = os.system('fab remote_server hostname') 
    return hostname 
+0

申し訳ありませんが、正しくフォーマットする方法を知りません:( – Abhi

+0

私は十分な評判がないので編集できませんが、テキストを強調表示し、角括弧付きのボタンをクリックするとコードがフォーマットされます –

+0

ファブリックコールを作成するのが難しいですか(これは本当にDjangoの質問ではありません)、またはDjangoを使って適切なパラメータを取得するのですか? –

答えて

8

から直接生地をインポートして使用することができます。参照:バージョン1.3の後http://docs.fabfile.org/en/1.3.3/usage/library.html

import fabric.api as fab 
from fabric.network import disconnect_all 
from contextlib import contextmanager 

@context_manager 
def ssh(settings): 
    with settings: 
     try: 
      yield 
     finally: 
      disconnect_all() 

def hostname(request, host='somehost', user='someuser', pw='secret'): 
    with ssh(fab.settings(host_string=host, user=user, password=pw)): 
     return fab.run('hostname') 
+0

私はこのように置くことができるだろうか? – Abhi

+0

すべての出力またはコマンドの出力のみ? – whitmo

+0

ちょうどコマンドの出力私はコマンドが正常に実行されたかどうかを知りたいのですか? – Abhi

1

あなたのサーバーは、ファブリックの必要な部品を持っている場合は、あなたが直接呼び出しに機能をfabfileだけインポートすることができるはずです。

(これは私がYMMWを夢見ちょうどいくつかのコードです)

import fabfile as f #Your fabfile must be somewhere it can be imported 


def get_hostname(request): 
    hostname = f.remote_server(hostname) 
    return hostname 

また、あなたはライブラリとしてファブリックを使用する必要がありますより大きいコントロールと柔軟性を高めるためジャンゴ

+1

"fapfile"、ええと?暑いです。 – Jordan

+0

それは、vエリはずっとそう – Pengman

0

チェックfabric.tasks.execute()を。

関連する問題