web-dev-qa-db-ja.com

Pythonでコマンドラインパスワード入力を取得する

LinuxでSudoを使ってパスワードを入力するように指示されたときに、ターミナルウィンドウに何も表示されません(パスワードは表示されません)。

Pythonでそれをする方法はありますか?私は機密性の高い情報を必要とするスクリプトを作成しています。それを入力するときにそれを隠したいと思います。

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

185
Nacht

getpass.getpass() を使う:

password = getpass()

オプションのプロンプトをパラメータとして渡すことができます。デフォルトは"Password: "です。

この関数は適切な端末を必要とするので、それはタイプされた文字のエコーをオフにすることができます - 詳細については “ GetPassWarning:IDLEから実行するときにエコーを制御できません” を参照してください。

234
Sven Marnach
import getpass

pswd = getpass.getpass('Password:')

getpass はLinux、Windows、そしてMac上で動作します。

150
Nafscript

このためには getpass を使用してください。

getpass.getpass - エコーすることなくユーザにパスワードの入力を促す

26
RanRag
import sys
import msvcrt

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

print '\n'+passwor

このコードはすべての文字の代わりにアスタリスクを印刷します。

11
Ahmed ALaa