java jsch su- root(我怎么能?)

时间:2014-04-04 08:09:00

标签: java linux jsch

我想连接Linux服务器并执行命令,但是当我发送命令shsu时 - 它需要密码,但是我的程序在它发出请求之前发送密码。我该如何解决这个问题?

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.");
        }
    }

}

1 个答案:

答案 0 :(得分:0)

当您使用 shell 频道时,为什么还需要拨打另一个?

我上面的任何操作都是传递单个命令然后读取inputStream,直到你回到提示符然后你可以设置下一个输入,例如密码或者什么。

伪代码

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