,我想远程Linux机器上运行的命令如下:的ProcessBuilder和ssh从一个Linux机器上调用远程命令
ssh [email protected]_server remote_command < local_script
这里remote_command是在远程计算机上运行命令和local_script是本地计算机上包含要传递给remote_command的字符串的文件。如果我在本地机器的命令行上运行此命令,那么我可以验证该命令对远程机器有正确的影响。不过,我需要使用的ProcessBuilder Java应用程序中运行此如下:
processBuilder = new ProcessBuilder("ssh [email protected]_server remote_command < local_script");
processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
processBuilder.redirectError(ProcessBuilder.Redirect.INHERIT);
process = processBuilder.start();
当我这样做,我总是得到错误:
的zsh:1:没有这样的文件或目录:local_script
我曾尝试变化,例如:
processBuilder = new ProcessBuilder("ssh", "[email protected]_server remote_command < local_script");
processBuilder = new ProcessBuilder("ssh", "[email protected]_server", "remote_command < local_script");
processBuilder = new ProcessBuilder("ssh", "[email protected]_server", "remote_command", "<", " local_script");
,但似乎没有任何工作。我已经验证了运行pwd给出了预期的目录,并且在使用ProcessBuilder运行时可以读取local_script(使用cat),所以我必须假设这与ssh命令的处理方式有关。有任何想法吗?
AFAIK它是'。/ some_script'运行某些东西从“cwd” – 2017-07-30 18:17:07