【问题标题】:how to run command line in linux from another user如何从另一个用户在 linux 中运行命令行
【发布时间】:2019-01-16 21:33:31
【问题描述】:

我需要从 red hat 中的 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 文件。此命令无法传递给其他帐户。

【问题讨论】:

  • 请参阅 this question 了解为什么不能像发布的那样工作的根本原因

标签: python linux subprocess splunk


【解决方案1】:

cmd1cmd2 是两个不同的进程,互不影响。如果你想走su 路线,你需要通过它调用你的shell脚本:

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

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多