以root身份运行Python脚本(使用sudo)-有效用户的用户名是什么?
|
我最近开始对我的python脚本使用ConfigParser()来为配置文件添加一些功能。我知道如何使用它,但是有问题。我的脚本需要使用sudo以root用户身份运行。配置文件位于“ 0”中,但是当您以sudo身份运行脚本时,它会临时将用户更改为root用户,因此找不到配置文件。我想要做的是获取有效用户的配置文件,以便它获取
/home/myuser/.config/scriptconfig/config.cfg
而不是/root/.config/scriptconfig/config.cfg
(不存在)。
我需要脚本能够在不同的机器上运行,而不仅仅是我的。所以我需要获得有效用户的主目录
这是我尝试使用的代码示例:
import os, ConfigParser
config = ConfigParser.RawConfigParser()
homepath = os.path.expanduser(\"~/\")
configpath = homepath + \".config/scriptconfig/config.cfg\"
config.read(configpath)
get = config.get(\'Config\', \'Example\')
print get
它应该从配置文件中打印example
的值,但是当以sudo运行时,路径为/home/root
,因此找不到配置文件。
没有找到相关结果
已邀请:
3 个回复
担每棱绰
)运行脚本,则环境变量
将是
,环境变量
将是执行命令
的用户的名称。以下只是对CédricJulien上一篇文章的澄清。请考虑以下情形: linux用户“ 11”已登录到系统并拥有sudo特权。他编写了以下名为
的python脚本:
然后,他用
使脚本可执行,然后使用以下命令以sudo特权执行他的脚本:
该程序的输出将是(使用python 2.x.x):
如果bob使用以下命令运行程序sans sudo特权
他将获得以下输出:
为陡土
您还具有SUDO_UID和SUDO_GID作为用户ID和组ID。
襄挟款籍
所以不要使用它。 你要这个。
http://docs.python.org/library/os.html#os.getlogin 也许这。