繁体   English   中英

如何从Windows上的Java应用程序在Linux服务器上执行Linux Shell命令

[英]How to execute Linux shell commands on Linux server from a java application that on windows

我知道这里曾多次问过这个问题。 但我没有找到任何明确的答案。

我想使用Java在Windows的linux命令上执行linux shell。

我有两个选择:

  1. 远程执行命令。

  2. 在linux上创建服务并从Windows打电话给他。

首选哪一种,以及实现它的最佳方法是什么?

没有明确的答案,这是有原因的。 答案取决于应用程序的要求。 您有两种可能的解决方案,它们各有利弊。

  • 创建服务意味着您遵循面向服务的体系结构 如果您的服务将被许多客户端使用并且您希望它与客户端无关,那么这将是一个不错的选择。 如果您只有一个特定的客户,这是一个过大的杀伤力。

  • 如果您有一个特定的客户端要与特定的服务器通信,则可以始终使用Direct SSH解决方案。 也许像Java Secure Channel这样的库将是最直接的解决方案。

  • 第三种选择是使用RMI( 远程方法调用 )之类的东西。 这是一个更复杂的解决方案,我不建议这样做,因为我认为它没有优点。

希望我能帮上忙!

您可以使用jcraft api。

下面是语法:

Session session = jsch.getSession("userName", "serverName", 22);
session.setPassword("password");
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
InputStream in = channelExec.getInputStream();
channelExec.setCommand("uptime");
channelExec.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String tmp;
while ((tmp= reader.readLine()) != null) {
System.out.println(tmp);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM