我正在尝试编写一个 python 脚本来使用 Plex 媒体扫描仪自动扫描 plex 的一部分。为此,我必须以运行 plex 的用户身份运行扫描仪(在本例中为“plex”),并为其提供环境变量“LD_LIBRARY_PATH”。我尝试过使用 subprocess.call 和 subprocess.Popen 没有区别。无论哪种情况,我都没有得到任何输出。
这是我正在使用的代码:
#!/usr/bin/python
import os
import subprocess
import shlex
env = os.environ.copy()
env['LD_LIBRARY_PATH'] = '/usr/lib/plexmediaserver'
s = "/bin/su - plex -c '/usr/lib/plexmediaserver/Plex\ Media\ Scanner -s -c 2'"
task = shlex.split(s)
exitCode = subprocess.call(task, env=env, shell=True)
现在我已经有了一个可以完成我想要做的事情的工作版本,但我不得不求助于使用包装器 bash 脚本来执行此操作。你可以看到下面的代码:
#!/bin/sh
export LD_LIBRARY_PATH=/usr/lib/plexmediaserver
/usr/lib/plexmediaserver/Plex\ Media\ Scanner $@
以及调用它的脚本的相关行:
exitCode = subprocess.call("/bin/su - plex -c '/var/lib/deluge/delugeScripts/pms.sh -s -c 2'", shell=True)
感谢您的帮助。
正如乔丹在评论中指出的那样:
su 中的 - 使其成为重新初始化环境的登录 shell。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)