如何在Java中使用SSH将ubuntu的shell脚本的命令输入结果返回给Java

时间:2019-05-10 19:17:15

标签: java shell ssh jsch

首先,感谢您对我的问题的关注。我需要将Linux命令输入的输出值传递给Java Script前端。由于Linux在VMware上运行,因此它在Windows Java上使用SSH进行连接。有没有办法将VMware的Linux命令的结果作为Windows中Java中的参数获取?这是我当前正在使用的Java代码。

    SSHReturnMethod sshReturnMethod = new SSHReturnMethod();
    ArrayList totalmsg = null;
    String host = "test.rebex.net";
    String user = "demo";
    String password = "password";
    String command = "cleos wallet create --to-console";

    try {
        Properties config = new Properties();
        config.put("StrictHostKeyChecking", "no");
        JSch jsch = new JSch();

        // Create a JSch session to connect to the server
        Session session = jsch.getSession("gpc", "192.168.3.128", 22);
        session.setPassword("password");
        session.setConfig(config);

        // Establish the connection
        session.connect();
        System.out.println("Connected...");

        ChannelExec channel = (ChannelExec) session.openChannel("exec");
        channel.setCommand(command);
        channel.setErrStream(System.err);


        InputStream in = channel.getInputStream();
        System.out.println(in);
        channel.connect();
        channel.connect();
        byte[] tmp = new byte[1024];
        while (true) {
            while (in.available() > 0) {
                int i = in.read(tmp, 0, 1024);
                if (i < 0) {
                    break;
                }
                System.out.print(new String(tmp, 0, i));
                System.out.print(new String(tmp, 0, i));
            }
            if (channel.isClosed()) {
                System.out.println("Exit Status: "
                        + channel.getExitStatus());
                break;
            }
            Thread.sleep(1000);
        }
        ArrayList valueOfReturn = sshReturnMethod.returnString(totalmsg); //value of return
        System.out.println(String.valueOf(valueOfReturn));
        channel.disconnect();
        session.disconnect();
        System.out.println("DONE!!!");
    } catch (Exception e) {
        e.printStackTrace();
    }

这是来自Java的结果值。

已连接... com.jcraft.jsch.Channel$MyPipedInputStream@51565ec2

错误3120001:钱包已存在 尝试使用其他钱包名称。

退出状态:1 返回输入为:null 空值 完成了!

我想要

错误3120001:钱包已存在  尝试使用其他钱包名称。

创建一个返回该部分的方法。

0 个答案:

没有答案