2012-02-08 2 views
107

LinuxでSudoを試してみるとパスワードを入力するように指示され、入力時に端末ウィンドウに何も表示されません(パスワードは表示されません)。Pythonでコマンドラインパスワードを入力する

Pythonでこれを行う方法はありますか?私はそれほど機密情報を必要とするスクリプトに取り組んでおり、入力時に隠されるようにしたいと考えています。

つまり、パスワードを表示せずにユーザーからパスワードを取得したいと考えています。

答えて

171

getpass.getpass()を使用してください。

+0

のアストリックスが動作する印刷されますが、どのように1は、スクリプトのコピーを作成して、行をコメントアウトします「ハッカー」のように注意してくださいすることができますユーザーのパスワードが必要ですか? – asf107

+81

@ asf107:ハッカーがソースコードを編集できる場合、心配する他の問題があります。 – DSM

+6

@ asf107 - パスワードを要求する背後にあるアイデアは、何かを使って認証するために渡すことができるようにすることです(私はこれを使って、オンラインサーバーで認証するためのパスワードを要求しています)。ハッカーが行をコメントアウトした場合、サーバーはもはや認証されないため、プログラムは単に失敗します。 'getpass()'の背後にある考え方は、誰もソースコードを見て、それを読むだけで誰もがパスワードを見つけることができないようにすることで、誰もあなたの肩を見つめてパスワードを読むことができます。それを入力してください。 – ArtOfWarfare

15

getpassを使用してください。

getpass.getpass - これは、Linux、Windows、およびMac上で動作します

76
import getpass 

pswd = getpass.getpass('Password:') 

をエコーせずにパスワードの入力をユーザーにプロンプ​​トを表示。

+1

明らかに、オペレーティングシステムを追加することは、投稿の[アドレッシング](http://stackoverflow.com/review/suggested-edits/15845407)ですので、ここではMacで動作することを説明しますOSも同様です。 – JakeD

1
import getpass 
p=str("null") #user's input start value 
pas=str("password") #password value 
while p!=pas: 
    p=getpass.getpass("Insert your password: ") #password input 
print("ay") #when you get the password, the output is "ay" 
+8

あなたは[PEP 8](https://www.python.org/dev/peps/pep-0008/)を読むべきです –

2
import sys 
import msvcrt 

passwor = '' 
while True: 
    x = msvcrt.getch() 
    if x == '\r': 
     break 
    sys.stdout.write('*') 
    passwor +=x 

print '\n'+passwor 

このコードではなく、すべての文字

+1

これはウィンドウだけですが、少なくとも「getpass」答えを繰り返すわけではありません。良い –

関連する問題