通过ssh在远程系统上执行java代码
我想在本地PC上运行一个java程序,该程序通过ssh连接到远程PC,并在那里执行一些方法(java代码,而不是bash脚本!)。例如,我发现了通过ssh在远程系统上执行java代码,java,ssh,Java,Ssh,我想在本地PC上运行一个java程序,该程序通过ssh连接到远程PC,并在那里执行一些方法(java代码,而不是bash脚本!)。例如,我发现了JSch,它支持ssh连接和远程执行类似的代码 JSch jsch=new JSch(); Session session=jsch.getSession(user, host, 22); session.setPassword(passwd); Channel channel=session.openChannel("shell"); channel.
JSch
,它支持ssh连接和远程执行类似的代码
JSch jsch=new JSch();
Session session=jsch.getSession(user, host, 22);
session.setPassword(passwd);
Channel channel=session.openChannel("shell");
channel.setInputStream(System.in);
...
ssh.connect();
MyExecuteClass execClass = new MyExecuteClass();
ssh.exec(execClass.runLongJob(a, b, c));
MyReturn return = ssh.getReturnValue();
(来自)
或ssxcute
,可与
ConnBean cb = new ConnBean("ip ", "username","password");
ssh = SSHExec.getInstance(cb);
ssh.connect();
CustomTask sampleTask = new ExecCommand("echo 123");
ssh.exec(sampleTask);
(来自)
但我想做的是
JSch jsch=new JSch();
Session session=jsch.getSession(user, host, 22);
session.setPassword(passwd);
Channel channel=session.openChannel("shell");
channel.setInputStream(System.in);
...
ssh.connect();
MyExecuteClass execClass = new MyExecuteClass();
ssh.exec(execClass.runLongJob(a, b, c));
MyReturn return = ssh.getReturnValue();
这可能吗?必须将对象a、b、c
以及所有全局变量、其他类、导入等传输到远程系统,。。。方法的返回值必须以某种方式返回。。。如果在runLongjob
方法中修改了其他对象,则这些更改也必须发送回本地PC
有解决方案吗?您想要做的基本上不仅需要在远程系统上序列化、传输和反序列化对象,还需要在主机上存在并启动Java VM,并且在其类路径中包含传输实例的类。我怀疑你能否找到一个现成的解决方案。不过,您可以使用类似RMI的东西与远程主机上运行的JVM进行通信。我不知道有哪种框架可以专门实现您所描述的功能。想到的最贴切的事情是使用web服务。它们允许您定义在远程服务器上运行的响应请求的服务。请求和响应可以包含复杂的数据结构。有成熟的库可以用java开发web服务 请看这些: