使用CommandRunner执行java程序

时间:2018-04-21 17:11:39

标签: python

我正在尝试使用python脚本中的命令行参数执行java程序。我在python中使用CommandRunner并调用其execute()方法,如下所示:

result = remote_command_runner_util.CommandRunner(command, host, user).execute()

当传入命令的java com.test.helloWorld等输入参数以及一些有效的用户和主机变量时,我无法执行上述命令调用。

是否可以使用CommandRunner从Python调用java程序? (这是我唯一可用的选项)。

1 个答案:

答案 0 :(得分:1)

唯一重要的技巧(从安全角度来看)是安全地逃避你的参数向量 - 如果使用subprocess(因为它允许shell=False),则可以避免这种情况,但是使用CommandRunner是不可避免的。

import pipes, shlex
if hasattr(pipes, 'quote'):
    quote = pipes.quote       # Python 2
else:
    quote = shlex.quote       # Python 3

def executeCommand(argv, host, user):
    cmd_str = (' '.join(quote(arg) for arg in argv))
    return remote_command_runner_util.CommandRunner(cmd_str, host, user).execute()

...之后用作:

executeCommand(['java', '-jar', '/path/to/remote.jar', 'com.test.helloWorld'], host, user)