1、引入依赖
<!-- SSH-->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.50</version>
</dependency>
2、测试demo
import com.jcraft.jsch.*;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.Properties;
import java.util.Vector;
public class Test {
@org.junit.jupiter.api.Test
public void ssh() throws Exception {
init("192.168.199.128","root","root");
}
public void init(String ip,String username,String password) throws Exception {
JSch jSch = new JSch();
Session session = jSch.getSession(username, ip);
session.setPassword(password);
// 设置no不提示用户选择,不然会报错
session.setConfig("StrictHostKeyChecking", "no");
session.connect(50000);
// 打开执行shell的通道
StringBuilder builder = new StringBuilder();
//有多种通道,我只示例了一种
Channel channel = session.openChannel("exec");//exec通道
ChannelExec channelExec= (ChannelExec) channel;
//操作Linux的命令
channelExec.setCommand("date");
channelExec.setCommand("ip addr");
// 多个命令可以用;隔开
channelExec.setCommand("cd /app/;ls");
//进入到指定目录
// channelSftp.cd();
//得到指定目录下文件列表
// ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");//sftp通道
// channelSftp.connect();
// Vector ls = channelSftp.ls(" cd /app");
// for (Object l : ls) {
// System.out.println(l);
// }
channel.setInputStream(null);
channelExec.setErrStream(System.err);
channel.connect();
InputStream inputStream = channelExec.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
BufferedReader reader = new BufferedReader(inputStreamReader);
String buffer;
while((buffer=reader.readLine())!=null){
builder.append("").append(buffer).append(";");
}
System.out.println("date:"+builder);
// 释放资源
session.disconnect();
System.out.println("连接成功");
}
}