如何使用Java在远程机器上执行Linux命令?
我有两个安全的linux服务器。在一台机器上,我的Java应用程序正在运行。我需要在Java中第一台机器的第二台机器上运行Linux命令。我该怎么做呢?基本上,您需要从Java应用程序中打开到其他服务器的ssh连接。该站点提供了一些关于库的有用信息,这些库将为您提供Java中的ssh支持 看起来这是最好的选择,但我没有用过,所以你需要看看你需要什么如何使用Java在远程机器上执行Linux命令?,java,linux,ssh,Java,Linux,Ssh,我有两个安全的linux服务器。在一台机器上,我的Java应用程序正在运行。我需要在Java中第一台机器的第二台机器上运行Linux命令。我该怎么做呢?基本上,您需要从Java应用程序中打开到其他服务器的ssh连接。该站点提供了一些关于库的有用信息,这些库将为您提供Java中的ssh支持 看起来这是最好的选择,但我没有用过,所以你需要看看你需要什么 一旦建立了ssh连接,您就可以像使用任何其他ssh客户端登录一样运行命令。签出套接字可能会更容易,因为您可以在不设置任何外部库的情况下执行您尝试执行
一旦建立了ssh连接,您就可以像使用任何其他ssh客户端登录一样运行命令。签出套接字可能会更容易,因为您可以在不设置任何外部库的情况下执行您尝试执行的操作 在主机上,您需要设置一个ServerSocket对象,然后从客户机上打开一个套接字。我没有时间打一个完整的例子,但看看这篇文章,可以找到一种用Java在Internet上建立服务器主机连接的简单方法 设置好后,您需要从计算机上的ServerSocket输入shell命令,该计算机应该执行该命令,并围绕命令行执行一些操作
String command = "get this from the ObjectInputStream attached to your ServerSocket";
Runtime run = Runtime.getRuntime();
Process pr = run.exec(command) ;
pr.waitFor() ;
BufferedReader buffer = new BufferedReader( new InputStreamReader( pr.getInputStream() ) ) ;
String line;
while ( ( line = buffer.readLine() ) != null )
{
System.out.println(line);
}
棘手的部分是使用套接字设置一个可实现的主机-客户端连接,但是如果您正在做一些简单的事情,您应该可以使用上面链接中的示例;然而,几乎每种方式都涉及到网络连接 您可以编写一对客户机-服务器Java程序,将客户机连接到服务器并提交命令 您可以编写Java来使用现有的服务器,如sshd、telnetd、rsh、ftpd,或者预先存在的允许在远程端执行命令的其他服务器 您可以利用一个体系结构来处理建立客户机-服务器对的某些方面,如RMI、SOAP、CORBA等 最终,Java支持大量的网络选项,因此您有比您想象的更多的方法来实现这一点。只需确保不要在web浏览器中执行此操作,因为这些JVM是通过沙盒启动的,如果没有帮助,您无法离开沙盒。Jsch()允许您使用SSH连接到远程服务器,并轻松执行shell命令(以及许多其他命令,如SCP、SFTP…)。虽然没有太多文档,但您有一些非常有用的实现示例(甚至有一个您想要做什么的示例)
您还可以将Jsch与Expect4j结合起来,这样就可以更好地控制要执行的命令(很好的示例)。首先想到的是套接字。当你可以使用ssh时,你真的想重新发明轮子,重做所有的事情来保护连接吗?我把这个问题误解为对Java实现的请求。谢谢你指出这一点。