Linux에서 Sudo를 시도 할 때 비밀번호를 입력하라는 메시지가 표시되고 입력 할 때 터미널 창에 아무것도 표시되지 않습니다 (비밀번호는 표시되지 않음)?
파이썬에서 그렇게하는 방법이 있습니까? 매우 민감한 정보가 필요한 스크립트를 작성 중이며 입력 할 때 숨겨지기를 원합니다.
즉, 비밀번호를 표시하지 않고 사용자로부터 비밀번호를 가져오고 싶습니다.
답변
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로만 테스트했습니다). 두 줄을 주석 처리하거나 주석 처리를 제거하여 창에서 작동하도록 할 수도 있습니다.