파이썬에서 명령 줄 암호 입력하기 Sudo를 시도 할 때 비밀번호를 입력하라는 메시지가

Linux에서 Sudo를 시도 할 때 비밀번호를 입력하라는 메시지가 표시되고 입력 할 때 터미널 창에 아무것도 표시되지 않습니다 (비밀번호는 표시되지 않음)?

파이썬에서 그렇게하는 방법이 있습니까? 매우 민감한 정보가 필요한 스크립트를 작성 중이며 입력 할 때 숨겨지기를 원합니다.

즉, 비밀번호를 표시하지 않고 사용자로부터 비밀번호를 가져오고 싶습니다.



답변

사용 getpass.getpass():

from getpass import getpass
password = getpass()

선택적 프롬프트는 매개 변수로 전달 될 수 있습니다. 기본값은 "Password: "입니다.

이 기능에는 적절한 터미널이 필요하므로 입력 된 문자의 에코를 끌 수 있습니다 . 자세한 내용 은 IDLE에서 실행할 때“GetPassWarning : 터미널의 에코를 제어 할 수 없음”을 참조하십시오.


답변

import getpass

pswd = getpass.getpass('Password:')

getpass 는 Linux, Windows 및 Mac에서 작동합니다.


답변

이 목적으로 getpass 를 사용하십시오 .

getpass.getpass-에코하지 않고 사용자에게 비밀번호를 묻습니다.


답변

이 코드는 모든 문자 대신 별표를 인쇄합니다.

import sys
import msvcrt

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

print '\n'+passwor

답변

15.7. getpass — 휴대용 암호 입력

#!/usr/bin/python3
from getpass import getpass
passwd = getpass("password: ")
print(passwd)

자세한 내용은 여기를 참조 하십시오


답변

@Ahmed ALaa의 답변 업데이트

# import msvcrt
import getch

def getPass():
    passwor = ''
    while True:
        x = getch.getch()
        # x = msvcrt.getch().decode("utf-8")
        if x == '\r' or x == '\n':
            break
        print('*', end='', flush=True)
        passwor +=x
    return passwor

print("\nout=", getPass())

msvcrt는 Windows의 경우에만 우리에게 있지만 PyPI의 getch 는 두 가지 모두 작동합니다 (Linux로만 테스트했습니다). 두 줄을 주석 처리하거나 주석 처리를 제거하여 창에서 작동하도록 할 수도 있습니다.