我想连接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.");
}
}
}
答案 0 :(得分:0)
当您使用 shell 频道时,为什么还需要拨打另一个?
我上面的任何操作都是传递单个命令然后读取inputStream,直到你回到提示符然后你可以设置下一个输入,例如密码或者什么。
伪代码
write "su -"
readUntil "password:"
write "******"
readUntil prompt
etc.