Использование Java PrcoessBuilder для запуска удаленного файла Python - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь выполнить файл Python (удаленно), используя Java Process Builder со следующим кодом.

 List<String> commands = new ArrayList<String>();
 commands.add("/bin/sh");
 commands.add("-c");
 commands.add("\"python <(curl <remote python file>\"");

 ProcessBuilder builder = new ProcessBuilder(commands);
 builder.redirectErrorStream(true);

и его выдача

/ bin / sh: python <(curl): нет такого файла или каталога </p>

Пробовал с интерполяцией команд($ перед командой curl и python не заключено в двойные кавычки)

 commands.add("/bin/sh");
 commands.add("-c");
 commands.add("python <$(curl <remote python file>)");

это выдает

неоднозначная ошибка перенаправления

1 Ответ

0 голосов
/ 19 января 2019

Java может делать почти все, что может curl.Просто скачайте файл с кодом:

URL remotePythonFile = new URL("http://example.com/remotefile.py");
Path localPythonFile = Files.createTempfile(null, ".py");
try (InputStream remoteStream = remotePythonFile.openStream()) {
    Files.copy(remoteStream, localPythonFile,
        StandardCopyOption.REPLACE_EXISTING);
}

ProcessBuilder builder =
    new ProcessBuilder("python", localPythonFile.toString());
...