Fix os.getlogin() problem with no tty
Catch OSError(s) from os.getlogin() and fall back to looking at environment variables to figure out the user's name. The OSError is thrown where there is no tty for the python process when os.getlogin() is called. Related-Bug: #1221491 Change-Id: I2bd735c9669ba9d25da108da44ea602f358b2dcc
This commit is contained in:
parent
5be4620ae5
commit
e86098cfc2
@ -62,6 +62,15 @@ def _exit_error(execname, message, errorcode, log=True):
|
||||
sys.exit(errorcode)
|
||||
|
||||
|
||||
def _getlogin():
|
||||
try:
|
||||
return os.getlogin()
|
||||
except OSError:
|
||||
return (os.getenv('USER') or
|
||||
os.getenv('USERNAME') or
|
||||
os.getenv('LOGNAME'))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Split arguments, require at least a command
|
||||
execname = sys.argv.pop(0)
|
||||
@ -107,7 +116,7 @@ if __name__ == '__main__':
|
||||
exec_dirs=config.exec_dirs)
|
||||
if config.use_syslog:
|
||||
logging.info("(%s > %s) Executing %s (filter match = %s)" % (
|
||||
os.getlogin(), pwd.getpwuid(os.getuid())[0],
|
||||
_getlogin(), pwd.getpwuid(os.getuid())[0],
|
||||
command, filtermatch.name))
|
||||
|
||||
obj = subprocess.Popen(command,
|
||||
|
Loading…
Reference in New Issue
Block a user