python - sudo su user -c 参数不起作用

标签 python linux

我正在尝试以另一个“用户”身份从 python 执行命令:

command = "sudo su user -c player --standard=1 -o 2"
subprocess.Popen(command.split(), shell=False, stdin=None, stdout=None, stderr=None, close_fds=True)   

但是 -c 之后的一切都会引起麻烦。 知道如何为我的程序播放器执行带有参数的命令吗?

当我用“player --standard=1 -o 2”创建单独的 2.py 脚本时(当然是在子进程中)并通过“sudo su user -c/home/user/2”从我的第一个脚本调用这个脚本.py”,它工作正常。

最佳答案

command.split() 生成列表 ['sudo', 'su', 'user', '-c', 'player', '--standard=1' , '-o', '2'],这不是您需要的。 su 期望命令在 -c 之后作为单个参数运行。

最简单的做法可能是手动构造列表,而不使用 split():

command = ['sudo', 'su', 'user', '-c', 'player --standard=1 -o 2']

如果你真的想从一个字符串开始,shlex 模块会很有帮助:

import shlex
command = shlex.split("sudo su user -c 'player --standard=1 -o 2'")

关于python - sudo su user -c 参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42344115/

相关文章:

python - 我怎样才能得到一个数字的前两位数字?

python - 在setup.py中为不同版本的python指定不同版本的lz4包

python - Twisted串口dataReceived()提供碎片数据

python - 来自不规则元组的 MultiIndex

python - 每 10 秒运行一次 Python 脚本

linux - 我可以从 x64 Linux 为 x86 Windows 编写程序集吗?

linux - wget 连接在同一台服务器上超时

linux - 无法写入我拥有并标记为可写的文件?

linux - 我如何在 Linux 中从 .txt 文档中提取数据?

c++ - 创建命令并通过 Linux 终端执行它们