在python中使用sudo和os.popen运行命令

在python中使用sudo和os.popen运行命令,python,popen,sudoers,virsh,Python,Popen,Sudoers,Virsh,我有一个命令/usr/bin/virsh dumpxml,需要在python程序内部运行,问题是该命令需要像sudo-u sudo/usr/bin/virsh dumpxml那样运行,我尝试用以下代码调用它: cmd=“sudo-u sudo/usr/bin/virsh dumpxml%s”%uuid data=os.popen(cmd.read()) ... 但是,我收到一条错误消息,指示找不到域,但是,如果我从bash运行相同的命令,它可以正常工作 /usr/bin/virsh dumpx

我有一个命令
/usr/bin/virsh dumpxml
,需要在python程序内部运行,问题是该命令需要像
sudo-u sudo/usr/bin/virsh dumpxml那样运行,我尝试用以下代码调用它:

cmd=“sudo-u sudo/usr/bin/virsh dumpxml%s”%uuid
data=os.popen(cmd.read())
...
但是,我收到一条错误消息,指示找不到域,但是,如果我从bash运行相同的命令,它可以正常工作

/usr/bin/virsh dumpxml
命令位于/etc/sudoers.d中/

此外,我还需要使用第二个“sudo”运行,因为如果没有,它将无法工作


有什么想法吗?

首先,我怀疑你是否真的需要第二个sudo。此外,您的文本表明命令末尾需要UUID,但您没有在代码中传递UUID。很抱歉,Updated可能最好使用子流程库检查此->