как использовать SSH в Java, чтобы вернуть результат ввода команды сценария оболочки ubuntu в java

Прежде всего, спасибо за интерес к моему вопросу. Мне нужно передать выходное значение ввода команды Linux в интерфейс Java Script. Поскольку Linux работает на VMware, он подключается с помощью SSH на Windows Java. Есть ли способ получить результат команды VMware Linux в качестве параметра в Java в Windows? Это 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 null ВЫПОЛНЕНО !!!

и я хочу

Ошибка 3120001: кошелек уже существует. Попробуйте использовать другое имя кошелька.

создать метод, который возвращает эту часть.


person Dongkeydev    schedule 10.05.2019    source источник
comment
В частности, см. ответ @gdbj.   -  person Martin Prikryl    schedule 13.05.2019