进入sudo用户,运行几个命令,回到Python脚本中的普通用户

时间:2013-05-05 02:15:09

标签: python shell

我遇到的问题是我想暂时进入sudo用户,运行几个命令,然后回到普通用户并以该模式运行命令。

您可以在此处找到我将使用的脚本:https://github.com/Greduan/dotfiles/blob/master/scripts/symlinks.py

基本上,当我在我的dotfiles的/bin文件夹下安装脚本时,我需要sudo访问权限以便为该文件夹创建符号链接。您可以在代码中的最后一个for语句下找到脚本的这一部分。

但是,由于我依赖于一些使用当前用户作为指导来执行操作的命令,因此我不能将整个脚本作为sudo运行。上次我尝试了一个关于文件夹不存在的错误。

感谢您提供的所有帮助。

2 个答案:

答案 0 :(得分:4)

如果您不介意安装外部依赖项,sh module会使这非常简单:

import sh

sh.cp('foo.txt', 'bar.txt')

with sh.sudo:
    sh.cp('foo2.txt', 'bar2.txt')

答案 1 :(得分:0)

最后我尝试了@Blender的解决方案,但它没有用,或者我无法弄明白。

所以相反,我做了以下事情:

subprocess.Popen('sudo rm ' + final_dest, shell=True)

subprocess.Popen('sudo ln -s ' + final_src + ' ' + final_dest, shell=True)

这正如我预期的那样正常工作,它没有额外的依赖关系。谢谢你的回答@Blender,但它对我不起作用。 ; |