0

Splunk(ログファイルなどのマシンデータを分析するツール)を使用しており、PHPでアプリケーションを使用しています。一部のデータについては、php(CLIベース)でアプリケーションを呼び出す必要があります。残念ながら、SplunkはPython呼び出しのみをサポートしています。
「パススルー」のように、同じ引数を使用してphpを1:1で「転送/呼び出し」、出力を返す簡単な方法はありますか。いわゆるサブプロセスモジュールを使用したソリューションの一部しか見つかりませんでしたが、Pythonの経験がゼロであるため、動作させることができません。

たとえば、splunkは次のように呼び出します。-
python external_lookup.py argument1 argument2 argument3
次に、pythonスクリプトは(pythonに与えられたCLI引数を使用して)呼び出す必要があります。-次に、
php external_lookup.php argument1 argument2 argument3
phpはその出力を書き込みます-Pythonはその出力
をキャプチャし、それ自体を出力します

どんな助けでも大歓迎です、または実用的なサンプルスクリプトはさらに良いです。

よろしくお願いします、
ヴィンス

4

2 に答える 2

1

Popensubprocess モジュールからの使用:

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 スクリプト自体の名前を除くすべてのコマンド ライン引数が含まれます。

于 2012-09-21T18:43:32.313 に答える
0

使用subprocess.call:

import sys, subprocess
sys.exit(subprocess.call(['php', sys.argv[0].replace('.py', '.php')] + sys.argv[1:]))

編集:PythonスクリプトがPHPスクリプトが返した値を返すようにしました。

于 2012-09-21T18:58:36.793 に答える