[英]How to execute Linux shell commands on Linux server from a java application that on windows
我知道这里曾多次问过这个问题。 但我没有找到任何明确的答案。
我想使用Java在Windows的linux命令上执行linux shell。
我有两个选择:
远程执行命令。
在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.