2012-11-01 55 views
6

पर प्रतिबिंबित न करें मैं तैनाती को स्वचालित करने के लिए Fabric का उपयोग कर रहा हूं। इस प्रक्रिया में उपयोगकर्ता को कुछ इनपुट पूछने के लिए prompt फ़ंक्शन का उपयोग करें। विशेष रूप से मुझे पासवर्ड मांगने की आवश्यकता है और मैं उपयोगकर्ता इनपुट का मूल्य छिपाना चाहता हूं, जैसे कि पायथन getpass का उपयोग करना। key और validate तर्कों के संचालन के कारण मैं prompt का उपयोग करना चाहता हूं।फैब्रिक में उपयोगकर्ता से पासवर्ड प्राप्त करें, मूल्य

क्या ऐसा करने के लिए एक कपड़ा निर्मित तरीका है, या क्या मुझे prompt source (अंत में पुल अनुरोध भेजना) बदलना है?

def set_password(password): 
    from fabric.state import env 
    env.password = env.passwords[env.host_string] = password 

कुंजी आसानी से है:

उत्तर

6

आप fabric.network

def prompt_for_password(prompt=None, no_colon=False, stream=None): 
    """ 
    Prompts for and returns a new password if required; otherwise, returns 
    None. 

    A trailing colon is appended unless ``no_colon`` is True. 

    If the user supplies an empty password, the user will be re-prompted until 
    they enter a non-empty password. 

    ``prompt_for_password`` autogenerates the user prompt based on the current 
    host being connected to. To override this, specify a string value for 
    ``prompt``. 

    ``stream`` is the stream the prompt will be printed to; if not given, 
    defaults to ``sys.stderr``. 
    """ 
    from fabric.state import env 
    handle_prompt_abort("a connection or sudo password") 
    stream = stream or sys.stderr 
    # Construct prompt 
    default = "[%s] Login password for '%s'" % (env.host_string, env.user) 
    password_prompt = prompt if (prompt is not None) else default 
    if not no_colon: 
     password_prompt += ": " 
    # Get new password value 
    new_password = getpass.getpass(password_prompt, stream) 
    # Otherwise, loop until user gives us a non-empty password (to prevent 
    # returning the empty string, and to avoid unnecessary network overhead.) 
    while not new_password: 
     print("Sorry, you can't enter an empty password. Please try again.") 
     new_password = getpass.getpass(password_prompt, stream) 
    return new_password 

यह इस तरह दिखता है में prompt_for_password उपयोग करने के लिए सक्षम हो सकता है कि कैसे कपड़े retrieves ssh के लिए पासवर्ड, वे तो इस env का उपयोग कर सेट किया गया है env सेट करके प्रतिस्थापन योग्य, लेकिन ऐसा लगता है कि आपको स्वयं को सत्यापित करना पड़ सकता है ...

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^