3

パスワードの入力を求める方法を探しています(つまり、入力エコーがありません)。WebSphereの7.0.0.19wsadminでjythonを使用しています。

私はそれを探しました-それはimportgetpassまたはimporttermiosで可能であるように見えます(しかし、私は「...という名前のモジュールがありません」という例外を受け取ります)。

とにかくパスワードの入力を求める方法はありますか?

ありがとうございました。

4

2 に答える 2

2

次のコードを使用できます。基本的に、存在する場合はJavaのconsole()を使用し(コンソールが常に存在するわけではないことに注意してください)、それ以外の場合はraw_input()とパスワードマスキングロジックを使用します。

# if console is not available (ex: when invoked from a shell script or another java process)
# we need to fall back to use raw_input, but we should mask the password if we use it
import sys, thread, time, threading
from java.lang import String
def getPass(stream=None):
    console = java.lang.System.console()
    if console is None:
        global p_stopMasking
        if not stream:
            stream = sys.stderr
        try:
            p_stopMasking = 0
            threading.Thread(target=_doMasking,args=(stream,)).start()
            password = raw_input()
            p_stopMasking = 1
        except Exception, e:
            p_stopMasking = 1
            print "Error Occured"
            print e
            exit()
    else:
        password = console.readPassword()
    return String.valueOf(password)

def _doMasking(stream):
    while not p_stopMasking:
        stream.write("\010*")
        #stream.write("\n")
        stream.flush()
        time.sleep(0.01)

def populateCredentials():
    global username
    global password
    print 'Enter username:'
    username = raw_input();
    print 'Enter password:'
    password = getPass(sys.stdout);

# start main
print 'start program...'
p_stopMasking= 1
username     = None
password     = None
populateCredentials()
print 'username is : ' + username
print 'password is  : ' + password
于 2012-11-05T06:40:15.600 に答える
1

以下も私のために働いた:

raw_input("")
myPass = raw_input("Please enter a password: ")

パスワードをマスクしないため、これは完全ではありませんが、機能します。何らかの理由で、最初の「raw_input」呼び出しを指定しない場合、スクリプトは2番目の呼び出しでブロックしません。

于 2014-06-13T19:49:56.710 に答える