Python os.getlogin problem Python os.getlogin problem python python

Python os.getlogin problem


From the os.getlogin() docs: "Returns the user logged in to the controlling terminal of the process." Your script does not have a controlling terminal when run from cron. The docs go on to suggest: "For most purposes, it is more useful to use the environment variable LOGNAME to find out who the user is, or pwd.getpwuid(os.getuid())[0] to get the login name of the currently effective user id."

Since you don't want to modify GitPython, you could write a script that does this:

import os, pwdos.getlogin = lambda: pwd.getpwuid(os.getuid())[0]import git# do whatever you need to do with GitPython here

I would suggest filing a bug (or better yet, submitting a patch) with GitPython, though.


Here is an untested guess about a work-around that might work: os.getlogin() calls getlogin() in the C library, which in turn looks up the login name in the utmp record corresponding to the current process. Since there is no utmp record for cron, you could try to create one using

sessreg -a <logname> ; do_stuff ; sessreg -d <logname>

in your crontab. Maybe you have to twiddle around with the sessreg options. And let me know if this really worked if you tried it :)