最近在公司项目中,需用java远程连接linux服务器。最终选定了用jsch的方式。但在实现的过程中遇到两个问题。
①通过jsch的exec通道时,执行su命令会异常开始,原因是因为执行su命令后返回的结果标准化输出后为空,所以异常卡死;最后放弃此种方式改用shell通道
②使用jsch的shell通道时,如何获取到返回结果。通过readline的方式读取时执行su依旧会进入死循环,最后决定通过读取字节码的方式来获取返回结果,通过字节码的方式读取时又遇到终端显示字体颜色的乱码问题,通过设置伪终端的方式解决。
一下为解决的代码:
首先创建会话:
public static Session createSession(String OSIP, String OSUserName, String OSPassword){
Session session = null;
JSch jsch = new JSch();
try {
// 通过jsch创建一个会话
session = jsch.getSession(OSUserName, OSIP, port);
// 设置会话自动传输密码
session.setPassword(OSPassword);
// 创建Properties类
Properties config = new Properties();
// 设置第一次登录不验证密码
config.put("StrictHostKeyChecking"
JSCH远程连接linux,如何解决字体颜色和返回结果输出
最新推荐文章于 2023-10-27 16:45:46 发布