2014-10-05 3 views
0

내 fab 파일에 여러 개의 서버가 있습니다. 나는 모든 서버에서 수행해야 할 작업을 묻는 기능을 원합니다. 내가 얻을 수행 할 때파이썬 패브릭은 모든 서버의 프롬프트에서 작업을 수행합니다.

def simple(): 
    actions = prompt('Type the actions: ') 
    run(actions) 

지금 :

[web1] Type the actions: 
     bla bla bla 

[web2] Type the actions: 
     bla bla bla 

[web3] Type the actions: 
     bla bla bla 

내가 한 번만 "즐 즐 즐"을 입력합니다 그리고 그것은 모든 서버에서 수행됩니다, 는 것이 가능할까요?

답변

0

여기에 simple()이 패브릭 작업 인 경우 작업이 실행되는 모든 호스트에 대해 prompt() 호출이 있으므로이 동작이 예상됩니다. 난 당신이 fab 명령 줄 도구를 사용한다고 가정하고, 가장 간단한 경우 :

# fabfile.py 

from fabric.api import run, env 

env.hosts = ['host1', 'host2'] 

def simple(command=''): 
    run(command) 

하고 다음과 같이 시작 :

$ fab simple:'ls -la' 
+0

감사하지만 메시지와 함께 뭔가를 할 수 있습니까? 나는 많은 "질문"을 가지고 있으며 undestand를 쉽게하기를 원한다. –

+0

'fab' 도구의 코드를 수정하지 않고 직접 할 수 있다고 확신하지는 않지만 쉘 스크립트에서 쉽게 얻을 수있다. 배쉬 원 라이너가 있습니다 :'echo '액션을 입력하십시오 :'; 행동을 읽는다. fab 단순 : '$ actions'' –

+0

오오오. 좋아, 이제 네가 한 대답을 따라 가겠다. –