Python-以sudo的形式运行代码的选择部分

Python-以sudo的形式运行代码的选择部分,python,Python,有并没有可能有一个脚本可以在并没有根访问权限的情况下运行,但若需要根访问权限,则可以收集密码,并选择代码片段作为sudo运行?如有必要,我可以使用密码和子流程以root身份逐个运行系统命令。但是,我使用的是一个用于脚本的库,它要求每个脚本都以root权限运行。如果我能做点什么 runAsRoot(blackBoxFunction, args) 我会准备好的。我实际上只有一段代码需要root访问。我不想编辑整个库以满足我的需要。我可以做一个变通方法,生成一个脚本,然后使用子流程以sudo的形式执

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

runAsRoot(blackBoxFunction, args)

我会准备好的。我实际上只有一段代码需要root访问。我不想编辑整个库以满足我的需要。我可以做一个变通方法,生成一个脚本,然后使用子流程以sudo的形式执行该脚本,但这似乎容易出错,而且我如何设置一切都会很痛苦,更不用说我可能需要动态生成脚本,因为我有一个很好的脚本,可以处理所有可能的场景。

这里是另一种几乎可以获得所需内容的方法

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])
导入检查
导入操作系统
def sudo_呼叫(fn,*args):
以open(“some_test.py”、“wb”)作为f:
f、 写入(inspect.getsource(fn))
f、 写入(“%s(*%r)”%(fn.\u名称\u参数)
系统(“echo | sudo-S-p”“python some_test.py”)
def你好(a,b):
打印a+b
sudo_call(你好,[1,2])

这是一项操作系统任务,而不是python问题。在Unix上,未经授权的进程只能通过启动单独的set-uid可执行文件来升级其权限。因此,您只需将脚本拆分为两个程序,就可以做您想做的事。它们的通信方式由您决定。或者强制用户以root用户身份运行您的脚本……嗯,我似乎记得告诉过您几天前我告诉过你同样的事情…但是我想…也许有人能给你一个不同的答案或者用不同的措辞,让你接受它…记住,设置脚本是不起作用的。:)有什么原因吗
os.system
被用在
子进程上
要输入的字母少了。。。如果您使用子流程,我不确定管道的支持程度,您可能必须执行
proc.stdin.write(SUDO_PW)