Python Fabric: сложная проблема с ssh - PullRequest
0 голосов
/ 14 марта 2012

У меня есть система, которую я использую для запуска сценария фабрики, который выполняет тестовые случаи на нескольких других клиентских системах. (Через launch_process.sh)

@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')

когда мы делаем потрясающий run_script

запускает процесс на других машинах (предположим, machine2, machine3) Теперь я хотел бы использовать команду «ps» для подтверждения, запущен процесс или нет. Но check_ps () работает на самом «контроллере», а не на клиентах.

Есть мысли о том, как этого добиться?

(в поисках решения без использования логина без пароля и popen или paramiko)

1 Ответ

2 голосов
/ 14 марта 2012

Fabric теперь выполняет execute (). 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'])

И с этим @hosts на check_ps все еще действует, если вы хотите запустить его в одиночку (без run_script ())

...