![](/img/trans.png)
[英]How to run java UI application on Mac from remote ssh terminal?
[英]How can I run an application on a remote machine by ssh?
如何通过 ssh 在远程计算机上运行应用程序?
我尝试使用 JSCH,这样:
Properties props = new Properties();
props.put("StrictHostKeyChecking", "no");
String host = "111.111.11.111";
String user = "myuser";
String pwd = "mypass";
// int port = 22;
JSch jsch = new JSch();
Session session = jsch.getSession(user, host);
session.setConfig(props);
session.setPassword(pwd);
session.connect();
System.out.println(session.getServerVersion());
System.out.println("Conected!");
// String command = "ps -ef;date;hostname";
String command = "myapplication someFileAsParameter";
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
// channel.setInputStream(System.in);
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
channel.connect();
我有这个:
bash:我的应用程序:找不到命令
当尝试通过 shell 执行此命令时,工作正常。
不一定需要是JSCH,可以是任何东西。
对于未来的读者:如讨论所示,原因是 JSch 连接到与普通 SSH 不同的服务器(其中一个有文件,而另一个没有)。 我仍然在这里给出我的答案,因为它包含一些有用的(我认为)针对类似问题的调试想法。 但请记住:首先检查您是否连接到正确的计算机。
原则上,如果您使用 JSch,这就是这样做的方法。 如果您收到错误消息bash: myapplication: command not found
,这意味着路径中没有myapplication
二进制文件。 (当使用普通命令行ssh
时,您将收到相同的错误消息。)
在您的普通 shell 中尝试which myapplication
(或type myapplication
)以查看它的位置。 然后使用echo $PATH >&2
作为命令,查看 exec 通道使用的路径。 当从您的普通 shell 执行时,这可能会有所不同。 如果是这样,请使用命令名称中的完整路径,或者修复您的设置。 (查看路径是否设置在~/.bashrc
、 ~/.profile
、 /etc/profile
或/etc/bash.bashrc
中。只有其中一些文件将在交互式与非交互式登录时执行 - 并且exec
通道将是我认为是非交互式的。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.