javajschsu-root(我怎么能?)

javajschsu-root(我怎么能?),java,linux,jsch,Java,Linux,Jsch,我想连接一个Linux服务器并执行一个命令,但是当我发送命令sh和su时,它需要密码,但我的程序在发出请求之前发送密码。我怎样才能解决这个问题 public class Stream { public void getStream(String fileName) { String user = usernametext.getText(); String host = hostiptext.getText(); String pa

我想连接一个Linux服务器并执行一个命令,但是当我发送命令sh和su时,它需要密码,但我的程序在发出请求之前发送密码。我怎样才能解决这个问题

public class Stream
{
    public void getStream(String fileName)
    {
        String user = usernametext.getText();
        String host = hostiptext.getText();
        String password = pass.getText();
        String command4 = "sh\nsu -\nmypassword\n";
        try
        {
            System.out.println("preparing the host information for stream.");
            JSch jsch = new JSch();
            Session session = jsch.getSession(user, host, 22);
            session.setPassword(password);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect(10 * 1000);
            Channel channel = session.openChannel("shell");
            InputStream is = new ByteArrayInputStream(command4.getBytes());
            channel.setInputStream(is);
            channel.setOutputStream(System.out);
            channel.connect(15 * 1000);
            session.connect(10 * 10);
            channel.disconnect();
            session.disconnect();
        }
        catch (Exception ex)
        {
            System.out.println("Exception found while streaming.");
        }
    }

}
当您使用shell频道时,为什么需要调用另一个sh

我做上述工作的任何方法都是传递单个命令,然后读取inputStream,直到返回提示符,然后您可以设置下一个输入,例如密码或其他任何内容

伪码

write "su -"
readUntil "password:"
write "******"
readUntil prompt
etc.

我是java新手,不知道怎么做基本上你是在读和写输入和输出流。看看你有没有解决这个问题的办法,请发到这里。我试图执行su命令,然后在下一行输入root密码,我得到的错误就像标准中的必须是tty。我只想用java进入linux的根目录。@thomson也许这会有所帮助,