我想使用JSch执行2个命令,但它们不应该一起使用。我这样做是为了从网关连接到服务器(因此命令ssh servername)
第一个命令:ssh servername 第二个命令:密码
我尝试了多种方法,但他们继续堆叠在一起。
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;
}
}
答案 0 :(得分:0)
在命令之间放置Thread.sleep可以实现技巧=)