在 JSch 中读取上一个命令的响应后执行命令

Executing commands after reading the response of a previous command in JSch

我想使用 JSch 执行 2 个命令,但它们不应该一起执行。我这样做是为了从网关连接到服务器(因此命令 ssh servername)

第一个命令:ssh 服务器名 第二个命令:密码

我尝试了多种方法,但它们总是叠加在一起。

        JSch jsch = new JSch();

        gateway = jsch.getSession(username, host, port);
        gateway.setPassword(password);
        gateway.setConfig(SessionPool.defaultSessionConfig());
        gateway.setHostKeyAlias(host);
        gateway.connect(20000);
        System.out.println("Session created");
channel = gateway.openChannel("shell");
        OutputStream ops = channel.getOutputStream();
        PrintStream ps = new PrintStream(ops, true);

        channel.connect();
        ps.println("ssh SERVER_NAME" + ENTER_KEY);

        ps.println(PASSWORD + ENTER_KEY);

        ps.close();

        InputStream in = channel.getInputStream();

        byte[] bt = new byte[1024];

        while (true) {

            while (in.available() > 0) {
                int i = in.read(bt, 0, 1024);
                if (i < 0)
                    break;
                String str = new String(bt, 0, i);
                // displays the output of the command executed.
                System.out.print(str);

            }
            if (channel.isClosed()) {

                break;
            }

        }

在命令之间放置 Thread.sleep 就可以了 =)