Source
xxxxxxxxxx
import errno
import os
import pwd
def get_user():
# Seen in
# http://cr.opensolaris.org/~migi/24_09_os_unix_using_osgetlogin_3595/test1.py
def __get_username():
# Cron jobs, at least in Ubuntu, are more likely to have LOGNAME set
# than USER.
#
# Note that environment variables are easily forged...
#
user = os.getenv('USER') or os.getenv('LOGNAME') or \
os.getenv('USERNAME')
if not user:
# ...but when su is being used it's hard to tell in advance
# whether the uid or euid is wanted.
return pwd.getpwuid(os.getuid()).pw_name
return user
try:
# os.getlogin() is limited to whatever POSIX getlogin() does.
return os.getlogin()
except AttributeError:
# os.getlogin() not available on this platform.
return __get_username()
except OSError, e:
if e.errno == errno.ENOTTY:
# Known failure case for gksu.
return __get_username()
else:
# In most cases, just do an os.getlogin() yourself if you want to see the error.
#print "os.getlogin() raised exception", e
#print "get_user() is using __get_username() instead of os.getlogin()."
return __get_username()
#raise