如果未输入,如何跳过登录密码提示

时间:2016-06-01 11:13:21

标签: python fabric

如果没有输入或密码错误,如何跳过登录密码提示.. 我有下面的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':

无论如何设置env,如果密码错误连续2个序列,那么它将转到下一个主机。

2 个答案:

答案 0 :(得分:0)

您可以使用此参数 -

with settings(abort_on_prompts=True):

此参数在提示用户输入时终止程序。你可以阅读它here

我不知道这是否能解决您的问题,据我所知,您所寻找的Fabric是不可能的,但至少您知道您的程序总是终止,并且可以解决密码问题。

答案 1 :(得分:0)

当我想避开密码提示但是在失败时继续我的脚本时,我使用SystemExit并捕获abort_on_prompt引发的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" 异常。

{{1}}