gpt4 book ai didi

java - 如何使用 Java exec

转载 作者:行者123 更新时间:2023-12-04 05:32:14 25 4
gpt4 key购买 nike

我对java相当陌生,现在我想使用java通过windows命令运行SSH。

这是我创建的代码,

Process pr1 = Runtime.getRuntime().exec("cmd /k" + "ssh root@host" + "&&" + "passwd" );
Process pr = Runtime.getRuntime().exec("ls");
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line=null;

while((line=input.readLine()) != null)
System.out.println(line);

我总是得到错误:

java.io.IOException: Cannot run program "ls": CreateProcess error=2, The system cannot find the file specified



有人可以帮我吗?

最佳答案

除了使用 JSch (或任何其他 Java SSH 实现),通过环境变量传递 Path 可能不起作用,因为大多数 SSH 守护进程只接受来自另一端的一小组变量(主要与本地化或终端类型有关)。

由于 ssh 的参数(或“命令”,如果将 JSch 与 ChannelExec 一起使用)传递给远程 shell 以执行,您可以尝试在此命令中定义路径(如果您的默认 shell 与 POSIX sh 兼容):
PATH=path_needed_toRun_myProg /absPathToMyProg/myProg
因此,您的 Runtime.exec 数组将如下所示:

String[] cmd = {"/usr/bin/ssh", "someRemoteMachine",
"PATH=path_needed_toRun_myProg /absPathToMyProg/myProg"};

如果使用 Runtime.exec 不是硬性规定,那么试试 Apache 的 Exec 库 ...

请参阅此链接:

http://commons.apache.org/exec/

关于java - 如何使用 Java exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12430018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com