我希望在Python中的命令后获取父用户sudo例如,从shell我可以做到:
# Shows root; *undesired* output
$ sudo whoami
root
# Shows parent user sjcipher, desired output
$ sudo who am i
sjcipher
Run Code Online (Sandbox Code Playgroud)
如何在不使用外部程序的情况下在Python中执行此操作?
小智 7
在大多数情况下,应该提供SUDO_USER环境变量:
import os
if os.environ.has_key('SUDO_USER'):
print os.environ['SUDO_USER']
else:
print os.environ['USER']
Run Code Online (Sandbox Code Playgroud)
who am i从 获取信息utmp(5);使用Python,您可以使用pyutmp访问信息;
这是一个改编自主页的示例pyutmp:
#!/usr/bin/env python2
from pyutmp import UtmpFile
import time, os
mytty = os.ttyname(os.open("/dev/stdin", os.O_RDONLY))
for utmp in UtmpFile():
if utmp.ut_user_process and utmp.ut_line == mytty:
print '%s logged in at %s on tty %s' % (utmp.ut_user, time.ctime(utmp.ut_time), utmp.ut_line)
$ ./test.py
martin logged in at Tue Jul 1 21:38:35 2014 on tty /dev/pts/5
$ sudo ./test.py
martin logged in at Tue Jul 1 21:38:35 2014 on tty /dev/pts/5
Run Code Online (Sandbox Code Playgroud)
缺点:这是一个 C 模块(即它需要编译),并且仅适用于 Python 2(不适用于 3)。
也许更好的选择是使用提供的环境变量sudo?例如:
[~]% sudo env | grep 1001
SUDO_UID=1001
SUDO_GID=1001
[~]% sudo env | grep martin
SUDO_USER=martin
Run Code Online (Sandbox Code Playgroud)
因此,使用类似的东西os.environ['SUDO_USER'] 可能会更好,具体取决于您想要做什么。
| 归档时间: |
|
| 查看次数: |
2881 次 |
| 最近记录: |