Atitit 同步获取阻塞式命令行输出 费阻塞式样命令行执行完毕后退出了,可以直接获取其输出 InputStream is = new StreamGobbler(session.getStd

使用SSH2连接远程服务器执行Redis命令,通过StreamGobbler读取标准输出流和错误输出流,同步获取命令执行结果。针对Redis等需要异步读取输出的情况,通过模拟同步模式和线程配合实现输出的获取。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值