如何从另一个用户在Linux中运行命令行

时间:2019-01-16 21:33:32

标签: python linux subprocess splunk

我需要在戴着红色帽子的python程序(python2.7)中执行bash脚本,而该bash脚本必须以splunk用户身份从另一个用户帐户运行。

在Linux中,我将首先切换为splunk用户su - splunk,然后以splunk用户身份键入命令./mybashFile

这是我尝试过的:

import  subprocess
cmd1=subprocess.Popen(["su","-","splunk"],shell=True,stdout=subprocess.PIPE)
cmd2=subprocess.Popen(["./path/myBashFile.sh"],shell=True,stdin=cmd1.stdout,stdout=subprocess.PIPE)
cmd2.stdout

我仍然无法以splunk用户身份运行此bash文件。此命令无法传递到另一个帐户。

1 个答案:

答案 0 :(得分:4)

cmd1cmd2是两个不同的过程,互不影响。如果您想走su路线,则需要通过以下方式调用Shell脚本:

...["su","-","splunk", "-c", "./path/myBashFile.sh"]...