2012-03-14 16 views
0

私は、私たちは ファブRUN_SCRIPTを行う際には、いくつかの他のクライアント・システム上でテストケースを実行する(launch_process.sh経由)ファブリックスクリプトPythonの生地:トリッキーなSSHの問題

@task 
@hosts('controller') 
def run_script(): 
      run('/test/launch_process.sh') 
      #below line didn't work 
      check_ps() 


@task 
@hosts('clients') 
def check_ps(): 
      run('ps aux | grep myprocess') 

を実行するために使用するシステムを持っています

他のマシンでプロセスを起動します(machine2、machine3と仮定します)。 ここでは、プロセスの実行を確認するために 'ps'コマンドを使用します。 しかし、check_ps()は 'コントローラ'自体で動作します。クライアントでは動作しません。

これを達成する方法についてのご意見はありますか?

(passwdlessログインとのpopenまたはparamikoを使用せずに、解決策を探して)

+0

なぜあなたは@hosts()に対して異なる引数を持っていますか? –

+0

あなたの答えを見てください:http://stackoverflow.com/questions/5346135/can-a-python-fabric-task-invoke-other-tasks-and-respect-their-hosts-lists – FatBusinessman

+0

THanks a lot !! :-) – Aravindh

答えて

2

ファブリックは今)(実行しています。あなたがやらせるよhttp://docs.fabfile.org/en/1.4.0/api/core/tasks.html#fabric.tasks.execute

@task 
@hosts('controller') 
def run_script(): 
    run('/test/launch_process.sh') 
    execute(check_ps, hosts=['client']) 

そしてcheck_ps上@hostsは、あなただけではそれを実行したい場合にはまだ有効であることを((W/O RUN_SCRIPT))