Using Java PrcoessBuilder to run Python remote file












2















I am trying to execute a python file (remote) using java Process builder with the following code.



 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);


and its giving




/bin/sh: python <(curl ): No such file or directory




Tried with command interpolation ($ in front of curl and python command is not wrapped around double quotes)



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


this is throwing




ambiguous redirect error











share|improve this question

























  • The interpolated version is missing a closing paren

    – Mad Physicist
    Jan 19 at 6:55











  • I would surmise that it’s trying to execute “python <$(curl <remote python file>” as a single command (not a command as a command with parameters), I would seperate and use “<$(curl <remote python file>” as a seperate command

    – MadProgrammer
    Jan 19 at 6:55











  • my bad on closing parenthesis (its copy/paste issue)

    – Nuthan Kumar
    Jan 19 at 7:04











  • Separate command means download file to local and then running python? I am afraid this may not be possible in my case. This is a framework where users provide a string of command and Java code executes them (any shell command)

    – Nuthan Kumar
    Jan 19 at 7:06
















2















I am trying to execute a python file (remote) using java Process builder with the following code.



 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);


and its giving




/bin/sh: python <(curl ): No such file or directory




Tried with command interpolation ($ in front of curl and python command is not wrapped around double quotes)



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


this is throwing




ambiguous redirect error











share|improve this question

























  • The interpolated version is missing a closing paren

    – Mad Physicist
    Jan 19 at 6:55











  • I would surmise that it’s trying to execute “python <$(curl <remote python file>” as a single command (not a command as a command with parameters), I would seperate and use “<$(curl <remote python file>” as a seperate command

    – MadProgrammer
    Jan 19 at 6:55











  • my bad on closing parenthesis (its copy/paste issue)

    – Nuthan Kumar
    Jan 19 at 7:04











  • Separate command means download file to local and then running python? I am afraid this may not be possible in my case. This is a framework where users provide a string of command and Java code executes them (any shell command)

    – Nuthan Kumar
    Jan 19 at 7:06














2












2








2








I am trying to execute a python file (remote) using java Process builder with the following code.



 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);


and its giving




/bin/sh: python <(curl ): No such file or directory




Tried with command interpolation ($ in front of curl and python command is not wrapped around double quotes)



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


this is throwing




ambiguous redirect error











share|improve this question
















I am trying to execute a python file (remote) using java Process builder with the following code.



 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);


and its giving




/bin/sh: python <(curl ): No such file or directory




Tried with command interpolation ($ in front of curl and python command is not wrapped around double quotes)



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


this is throwing




ambiguous redirect error








java processbuilder






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 19 at 7:03







Nuthan Kumar

















asked Jan 19 at 6:46









Nuthan KumarNuthan Kumar

16212




16212













  • The interpolated version is missing a closing paren

    – Mad Physicist
    Jan 19 at 6:55











  • I would surmise that it’s trying to execute “python <$(curl <remote python file>” as a single command (not a command as a command with parameters), I would seperate and use “<$(curl <remote python file>” as a seperate command

    – MadProgrammer
    Jan 19 at 6:55











  • my bad on closing parenthesis (its copy/paste issue)

    – Nuthan Kumar
    Jan 19 at 7:04











  • Separate command means download file to local and then running python? I am afraid this may not be possible in my case. This is a framework where users provide a string of command and Java code executes them (any shell command)

    – Nuthan Kumar
    Jan 19 at 7:06



















  • The interpolated version is missing a closing paren

    – Mad Physicist
    Jan 19 at 6:55











  • I would surmise that it’s trying to execute “python <$(curl <remote python file>” as a single command (not a command as a command with parameters), I would seperate and use “<$(curl <remote python file>” as a seperate command

    – MadProgrammer
    Jan 19 at 6:55











  • my bad on closing parenthesis (its copy/paste issue)

    – Nuthan Kumar
    Jan 19 at 7:04











  • Separate command means download file to local and then running python? I am afraid this may not be possible in my case. This is a framework where users provide a string of command and Java code executes them (any shell command)

    – Nuthan Kumar
    Jan 19 at 7:06

















The interpolated version is missing a closing paren

– Mad Physicist
Jan 19 at 6:55





The interpolated version is missing a closing paren

– Mad Physicist
Jan 19 at 6:55













I would surmise that it’s trying to execute “python <$(curl <remote python file>” as a single command (not a command as a command with parameters), I would seperate and use “<$(curl <remote python file>” as a seperate command

– MadProgrammer
Jan 19 at 6:55





I would surmise that it’s trying to execute “python <$(curl <remote python file>” as a single command (not a command as a command with parameters), I would seperate and use “<$(curl <remote python file>” as a seperate command

– MadProgrammer
Jan 19 at 6:55













my bad on closing parenthesis (its copy/paste issue)

– Nuthan Kumar
Jan 19 at 7:04





my bad on closing parenthesis (its copy/paste issue)

– Nuthan Kumar
Jan 19 at 7:04













Separate command means download file to local and then running python? I am afraid this may not be possible in my case. This is a framework where users provide a string of command and Java code executes them (any shell command)

– Nuthan Kumar
Jan 19 at 7:06





Separate command means download file to local and then running python? I am afraid this may not be possible in my case. This is a framework where users provide a string of command and Java code executes them (any shell command)

– Nuthan Kumar
Jan 19 at 7:06












1 Answer
1






active

oldest

votes


















0














Java can do just about everything curl can do. Just download the file with code:



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());





share|improve this answer
























  • unfortunately, this is not an option for us. The code snippet above is getting dynamic List (commands ) from an external source and this can have any valid shell command.

    – Nuthan Kumar
    Jan 19 at 7:16











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54264737%2fusing-java-prcoessbuilder-to-run-python-remote-file%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














Java can do just about everything curl can do. Just download the file with code:



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());





share|improve this answer
























  • unfortunately, this is not an option for us. The code snippet above is getting dynamic List (commands ) from an external source and this can have any valid shell command.

    – Nuthan Kumar
    Jan 19 at 7:16
















0














Java can do just about everything curl can do. Just download the file with code:



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());





share|improve this answer
























  • unfortunately, this is not an option for us. The code snippet above is getting dynamic List (commands ) from an external source and this can have any valid shell command.

    – Nuthan Kumar
    Jan 19 at 7:16














0












0








0







Java can do just about everything curl can do. Just download the file with code:



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());





share|improve this answer













Java can do just about everything curl can do. Just download the file with code:



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());






share|improve this answer












share|improve this answer



share|improve this answer










answered Jan 19 at 7:12









VGRVGR

22.7k42840




22.7k42840













  • unfortunately, this is not an option for us. The code snippet above is getting dynamic List (commands ) from an external source and this can have any valid shell command.

    – Nuthan Kumar
    Jan 19 at 7:16



















  • unfortunately, this is not an option for us. The code snippet above is getting dynamic List (commands ) from an external source and this can have any valid shell command.

    – Nuthan Kumar
    Jan 19 at 7:16

















unfortunately, this is not an option for us. The code snippet above is getting dynamic List (commands ) from an external source and this can have any valid shell command.

– Nuthan Kumar
Jan 19 at 7:16





unfortunately, this is not an option for us. The code snippet above is getting dynamic List (commands ) from an external source and this can have any valid shell command.

– Nuthan Kumar
Jan 19 at 7:16


















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54264737%2fusing-java-prcoessbuilder-to-run-python-remote-file%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Liquibase includeAll doesn't find base path

How to use setInterval in EJS file?

Petrus Granier-Deferre