我们正在使用Splunk(一种分析日志文件等机器数据的工具),并在PHP中有一个应用程序。对于某些数据,我们需要在 php(基于 CLI)中调用我们的应用程序。不幸的是,Splunk只支持Python调用。
有没有一种简单的方法可以使用相同的参数进行 1:1 "转发/调用"php 并返回输出,就像"直通"一样。我只找到了带有所谓子流程模块的解决方案的一部分,但我的 python 经验为零,所以无法让它工作。
例如,splunk 调用:python external_lookup.py argument1 argument2 argument3
- 然后 python 脚本应该调用(使用 CLI 参数提供给 python):php external_lookup.php argument1 argument2 argument3
- 然后 php 写入其输出
- Python捕获该输出并自行输出
非常感谢任何帮助,或者更好的工作示例脚本。
提前感谢,
文 斯
使用子流程模块中的Popen
:
import sys
from subprocess import Popen
output = subprocess.Popen(['php', 'path/to/script.php'] + sys.argv[1:], stdout=subprocess.PIPE).communicate()[0]
sys.argv[1:]
包含除 python 脚本本身名称之外的所有命令行参数。
使用 subprocess.call
:
import sys, subprocess
sys.exit(subprocess.call(['php', sys.argv[0].replace('.py', '.php')] + sys.argv[1:]))
编辑:使Python脚本返回PHP脚本返回的值。