javajschsu-root(我怎么能?)
我想连接一个Linux服务器并执行一个命令,但是当我发送命令sh和su时,它需要密码,但我的程序在发出请求之前发送密码。我怎样才能解决这个问题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
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也许这会有所帮助,