Atitit 同步获取阻塞式命令行输出
费阻塞式样命令行执行完毕后退出了,可以直接获取其输出
InputStream is = new StreamGobbler(session.getStderr());// 获得标准输出流
BufferedReader brs = new BufferedReader(new InputStreamReader(is));
for (String line = brs.readLine(); line != null; line = brs.readLine()) {
result.add(line);
}
但比如redis这类祖塞师 ,就不能这么做了
需要式样异步线程读取stdstream,然后输出,,可以配合sleep模拟同步模式
/redisJsDriver/src/sshdemo.java
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
public class sshdemo {
public static void main(String[] args) throws Exception {
Connection con = new Connection("10 11", 22);
con.connect();
boolean isAuthed;
isAuthed = con.authenticateWithPassword("root", " 21");
Session session = con.openSession();
String redisCmd = "redis-cli -h .11 -p 63790 -a ttredis$ ";
System.out.println(redisCmd);
session.execCommand(redisCmd);
List<String> result_tmp = new ArrayList<>();
OutputStream oStream = session.getStdin();
String auth = "auth ttre 24";
IOUtilsS