概述
Jsch集成hutool进行整合测试
实践
引入jar
引入两个包 jsch
及 hutool-all
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.31</version>
</dependency>
主要代码
主要测试了命令执行情况,exec
是没有问题的,但 execByShell
执行出现了阻塞,不会出结果,这个问题在下面问题点章节详细说明。
import cn.hutool.extra.ssh.JschUtil;
import com.jcraft.jsch.Session;
import org.junit.jupiter.api.Test;
import java.nio.charset.StandardCharsets;
public class HutoolTest {
@Test
public void test() {
// 获得一个SSH会话,重用已经使用的会话
Session session = JschUtil.getSession("10.32.36.57", 22, "root", "luxshare");
System.out.println(JschUtil.exec(session, "ls -a ", StandardCharsets.UTF_8));
}
/**
* 执行失败
*/
@Test
public void test2() {
// 获得一个SSH会话,重用已经使用的会话
Session session = JschUtil.getSession("10.32.36.57", 22, "root", "luxshare");
System.out.println(JschUtil.execByShell(session,"ls", StandardCharsets.UTF_8));
}
/**
* 解决 echo 无返回值问题
* source /etc/profile;source ~/.bashrc;
*/
@Test
public void test3() {
// 获得一个SSH会话,重用已经使用的会话
Session session = JschUtil.getSession("10.32.36.57", 22, "root", "luxshare");
System.out.println(JschUtil.exec(session, "source /etc/profile;source ~/.bashrc; echo $JAVA_HOME", StandardCharsets.UTF_8));
// System.out.println(JschUtil.execByShell(session,"ls", StandardCharsets.UTF_8));
}
@Test
public void test4() {
// 获得一个SSH会话,重用已经使用的会话
Session session = JschUtil.getSession("10.32.36.57", 22, "root", "luxshare");
System.out.println(JschUtil.exec(session, "ls -l ", StandardCharsets.UTF_8));
}
}
问题
针对 execByShell
执行出现了阻塞,hutool实际上并未给出对应的解决方案
链接
根据社区推荐的解决方案,试了一下,也是不行,好在,能执行各种命令,就已经可以解决个人遇到的问题。
结束
针对java 远程操作服务器,还有 sshj
等。