2016-06-01 3 views
0

입력하지 않았거나 암호가 틀리면 로그인 암호 프롬프트를 건너 뛰는 방법 다음은 python 패브릭 코드입니다. 잘 작동하지만 잘못된 암호가 붙어 있습니다.입력하지 않으면 로그인 암호 프롬프트 건너 뛰기 방법

내가 그것을 실행하면 내가 직접 그것을 깰 때까지만 존재 의미
import sys 
from fabric.api import * 
env.skip_bad_hosts=True 
env.command_timeout=60 
env.user = 'test' 
env.shell = "/bin/sh -c" 
env.warn_only = True 
env.password = 'mypass' 
def read_hosts(): 
    env.hosts = [line.strip() for line in sys.stdin.readlines()] 

def cyberark(): 
    with settings(warn_only=True): 
     output=sudo("/monitor.sh",shell=False) 

...

[pc-karn] Executing task 'cyberark' 
[pc-karn] sudo: /monitor.sh 
[pc-karn] Login password for 'test': 

은 암호가 2 연속 순서로 잘못 주어진 경우 ENV를 설정하는 어쨌든 거기 그것은 갈 것이다 다음 호스트에 연결하십시오.

답변

0

당신이 매개 변수를 사용할 수 있습니다 -

with settings(abort_on_prompts=True): 

이 매개 변수는 프로그램을 종료 할 때 프롬프트 입력을위한 사용자. 당신은 그것에 대해 here 읽을 수 있습니다.

당신의 문제를 해결할 수 있을지 모르겠지만 찾고있는 것은 불가능합니다.하지만 적어도 프로그램이 항상 종료되고 암호 문제를 해결할 수 있다는 것을 알고 있습니다.

+0

이 테스트를 통해 프로그램이 종료되고 루프가 종료됩니다. – rocky1981

+0

나는 병렬로 다른 호스트들과 계속해야한다고 생각한다. - http://docs.fabfile.org/en/1.11/usage/parallel.html – avivb

0

비밀번호 프롬프트를 피하고 스크립트를 계속 실행하려면 abort_on_prompts=True을 사용하고 abort_on_prompt가 발생시킨 SystemExit 예외를 잡으십시오.

try : 
    with settings(abort_on_prompts=True): 
    output=sudo("/monitor.sh",shell=False) 
except SystemExit as se : 
    print "What I want to do when it fails"