Python - 将选择的代码段作为sudo运行

时间:2015-12-09 21:17:58

标签: python

是否可以拥有一个可以在没有root访问权限的情况下运行的脚本,但是如果需要root访问权限,则可以收集密码,并且选择的代码片段可以作为sudo运行?如果需要,我可以使用密码和子进程以root身份逐个运行系统命令。但是,我使用的是用于脚本的库,并要求每个脚本都以root权限运行。如果我可以做一些像

这样的事情
runAsRoot(blackBoxFunction, args)

我会被设定。我真的只有一个代码块,我需要root访问权限。我不想编辑整个库以满足我的需求。我可以做一个解决方法,在那里我生成一个脚本,然后使用子进程将该脚本作为sudo执行,但这似乎容易出错,并且我将如何设置所有内容会很痛苦,更不用说我可能必须动态生成脚本有一个伟大的脚本可以处理每个可能的场景。

1 个答案:

答案 0 :(得分:1)

这是另一种几乎可以得到你想要的方式

import inspect
import os
def sudo_call(fn,*args):
    with open("some_test.py","wb") as f:
        f.write(inspect.getsource(fn))
        f.write("%s(*%r)"%(fn.__name__,args)
    os.system("echo <SUDO_PASSWORD> | sudo -S -p '' python some_test.py ")

def hello(a,b):
    print a+b

sudo_call(hello,[1,2])