【问题标题】:Execute java code on remote system via ssh通过 ssh 在远程系统上执行 java 代码
【发布时间】:2014-06-14 00:32:57
【问题描述】:

我想在我的本地 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.setInputStream(System.in);

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

ssxcute,可与

一起使用
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/

但我想做的是类似

...
ssh.connect();
MyExecuteClass execClass = new MyExecuteClass();
ssh.exec(execClass.runLongJob(a, b, c));
MyReturn return = ssh.getReturnValue();

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

有解决办法吗?

【问题讨论】:

    标签: java ssh


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      查看这些:

      【讨论】:

        猜你喜欢
        • 2013-02-15
        • 1970-01-01
        • 2020-01-04
        • 2013-11-22
        • 2011-05-09
        • 2015-07-04
        • 1970-01-01
        • 1970-01-01
        • 2011-11-08
        相关资源
        最近更新 更多