|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2004 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing utilities to get a password and/or the current user name. |
|
8 |
|
9 getpass(prompt) - prompt for a password, with echo turned off |
|
10 getuser() - get the user name from the environment or password database |
|
11 |
|
12 This module is a replacement for the one found in the Python distribution. It |
|
13 is to provide a debugger compatible variant of the a.m. functions. |
|
14 """ |
|
15 |
|
16 __all__ = ["getpass", "getuser"] |
|
17 |
|
18 |
|
19 def getuser(): |
|
20 """ |
|
21 Function to get the username from the environment or password database. |
|
22 |
|
23 First try various environment variables, then the password |
|
24 database. This works on Windows as long as USERNAME is set. |
|
25 |
|
26 @return username |
|
27 @rtype str |
|
28 """ |
|
29 # this is copied from the oroginal getpass.py |
|
30 |
|
31 import os |
|
32 |
|
33 for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'): |
|
34 user = os.environ.get(name) |
|
35 if user: |
|
36 return user |
|
37 |
|
38 # If this fails, the exception will "explain" why |
|
39 import pwd |
|
40 return pwd.getpwuid(os.getuid())[0] |
|
41 |
|
42 |
|
43 def getpass(prompt='Password: '): |
|
44 """ |
|
45 Function to prompt for a password, with echo turned off. |
|
46 |
|
47 @param prompt Prompt to be shown to the user |
|
48 @type str |
|
49 @return Password entered by the user |
|
50 @rtype str |
|
51 """ |
|
52 return input(prompt, False) # secok |
|
53 |
|
54 |
|
55 unix_getpass = getpass |
|
56 win_getpass = getpass |
|
57 default_getpass = getpass |
|
58 fallback_getpass = getpass |