getpass — 휴대용 비밀번호 입력

getpass — 휴대용 비밀번호 입력

getpass 모듈은 사용자에게 비밀번호를 입력받을 때 그 입력이 화면에 그대로 노출되지 않게 해 주는 기능을 담당해요. 콘솔 프로그램에서 비밀번호를 안전하게 받아야 할 때 아주 유용합니다.

출처: Python 표준 라이브러리

getpass()

  • getpass.getpass(prompt='Password: ', stream=None, *, echo_char=None)

사용자에게 비밀번호를 묻되 화면에 에코(echo) 없이 입력받아요. 사용자에게 보여줄 안내 문구 prompt는 기본값이 'Password: '예요. Unix에서는 이 안내 문구가 파일류 객체 stream에 쓰이는데, 필요한 경우 replace 오류 처리기를 사용합니다. stream은 기본적으로 제어 터미널(/dev/tty)이고, 그것이 사용 불가능하면 sys.stderr로 대체돼요. (Windows에서는 이 인자가 무시됩니다.)

echo_char 인자는 타이핑하는 동안 사용자 입력을 어떻게 보여줄지를 정해요. echo_charNone(기본값)이면 입력이 계속 숨겨진 상태로 유지되고, 그 외의 값이면 반드시 하나의 출력 가능한(printable) ASCII 문자여야 하며, 타이핑하는 각 문자가 그 문자로 대체돼 표시됩니다. 예를 들어 echo_char='*'를 주면 실제 입력 대신 별표가 표시돼요.

에코 없이 입력받는 기능을 쓸 수 없는 환경이라면, getpass()stream에 경고 메시지를 출력하고 sys.stdin에서 입력을 읽는 방식으로 폴백하면서 GetPassWarning을 발생시킵니다.

참고: IDLE 안에서 getpass를 호출하면, 입력 자체가 IDLE 창이 아니라 IDLE을 실행한 터미널에서 이뤄질 수 있어요.

참고: Unix 시스템에서 echo_char를 설정하면 터미널이 비정규(noncanonical) 모드로 동작하게 돼요. 특히 이는 Ctrl+U 같은 줄 편집 단축키가 동작하지 않고, 입력에 예상치 못한 문자가 들어갈 수도 있다는 뜻입니다.

버전 3.14에서 변경: 키보드 피드백용 echo_char 매개변수가 추가됐어요.

GetPassWarning

  • exception getpass.GetPassWarning

비밀번호 입력이 화면에 에코될 수 있을 때 발생시키는 UserWarning의 하위 클래스예요.

getuser()

  • getpass.getuser()

사용자의 "로그인 이름"을 반환해요.

이 함수는 환경 변수 LOGNAME, USER, LNAME, USERNAME을 순서대로 확인해서, 그중 비어 있지 않은 문자열로 설정되어 있는 첫 번째 값을 반환합니다. 모두 설정돼 있지 않으면, pwd 모듈을 지원하는 시스템에서는 비밀번호 데이터베이스에서 로그인 이름을 가져오고, 그렇지 않으면 OSError를 발생시켜요.

일반적으로 이 함수는 os.getlogin()보다 선호됩니다.

버전 3.13에서 변경: 이전에는 OSError뿐만 아니라 여러 다양한 예외도 발생했어요.

더 알아보기