首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过ssh在远程系统上执行java代码

通过ssh在远程系统上执行java代码
EN

Stack Overflow用户
提问于 2014-06-13 17:13:20
回答 2查看 1.7K关注 0票数 2

我想在我的本地PC上运行一个java程序,该程序使用ssh连接到远程PC并执行一些方法(java代码,而不是bash脚本!)那里。例如,我发现了JSch,它支持ssh连接和代码的远程执行,例如

代码语言:javascript
复制
JSch jsch=new JSch();
Session session=jsch.getSession(user, host, 22);
session.setPassword(passwd);
Channel channel=session.openChannel("shell");
channel.setInputStream(System.in);

(来自http://www.jcraft.com/jsch/examples/Shell.java.html)

或可与一起使用的ssxcute

代码语言:javascript
复制
ConnBean cb = new ConnBean("ip ", "username","password");
ssh = SSHExec.getInstance(cb);      
ssh.connect();
CustomTask sampleTask = new ExecCommand("echo 123");
ssh.exec(sampleTask);

(来自https://code.google.com/p/sshxcute/)

但我想要做的是

代码语言:javascript
复制
...
ssh.connect();
MyExecuteClass execClass = new MyExecuteClass();
ssh.exec(execClass.runLongJob(a, b, c));
MyReturn return = ssh.getReturnValue();

这个是可能的吗?对象a,b,c必须传输到远程系统,以及所有全局变量、其他类、导入...方法的返回值必须以某种方式返回...如果在runLongjob方法中修改了其他对象,则这些更改也必须发送回本地PC。

对此有解决方案吗?

EN

回答 2

Stack Overflow用户

发布于 2014-06-13 17:55:10

基本上,您要做的不仅需要在远程系统上序列化、传输和反序列化对象,还需要在主机上存在并启动Java VM,并且在其类路径中包含用于传输的实例的类。我怀疑你会找到一个开箱即用的解决方案。不过,您可以使用类似RMI的方式与远程主机上正在运行的JVM进行通信。

票数 0
EN

Stack Overflow用户

发布于 2014-06-14 00:32:58

我不知道有什么框架可以具体做你所描述的事情。最容易想到的事情就是使用web服务。它们允许您定义在应答请求的远程服务器上运行的服务。请求和响应可以包含复杂的数据结构。java中有用于开发web服务的成熟的库。

请参阅以下内容:

  • Introduction to Web Services
  • Building Web Services with JAX-WS
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24201717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档