JSch通过代理机访问服务器并执行命令
maven jar包新增
```java
<!--ssh服务端工具-->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.53</version>
</dependency>
```
功能实现
```java
import com.jcraft.jsch.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Objects;
/**
* <功能简要> <br>
* <ssh服务端连接工具>
* 通过JSch实现通过代理机访问服务器,执行一条命令输出命令执行结果
*
* @Author heyanbo
* @createTime 2020/12/22 16:14
* @since
*/
public class JSchUtils {
private static Logger LOGGER = LoggerFactory.getLogger(JSchUtils.class);
public static final String PROXY_HOST="";
public static final int PROXY_PORT=111;
public static final String HOST_USER="root";
public static final String HOST_IP="";
public static final int HOST_PORT=22;
public static final String HOST_PASSWORD="12345";
public static void main(String[] args) {
BufferedReader bufferedReader = null;
Session session = null;
Channel channel = null;
ChannelExec channelExec = null;
try {
//JSch 创建session建立连接
JSch jSch = new JSch();
session = jSch.getSession(HOST_USER, HOST_IP, HOST_PORT);
session.setPassword(HOST_PASSWORD);
//设置公认密钥确认级别,安全的内网坏境使用
session.setConfig("StrictHostKeyChecking","no");
//设置代理服务器
ProxyHTTP proxyHTTP = new ProxyHTTP(PROXY_HOST, PROXY_PORT);
//proxyHTTP.setUserPasswd("","");
session.setProxy(proxyHTTP);
session.connect(10000);
//打开一个通道,设置通道类型以及要执行命令的类型
channel = session.openChannel("exec");
channelExec = (ChannelExec)channel;
//设置登录到物理机后要执行的命令,单条命令
channelExec.setCommand("ipmcget -d healthevents");
channelExec.setInputStream(null);
//获取命令执行结果
bufferedReader = new BufferedReader(new InputStreamReader(channelExec.getInputStream()));
channelExec.connect(10000);
String line;
while ((line = bufferedReader.readLine())!=null){
LOGGER.info(line.trim());
}
}catch (Exception e){
LOGGER.error("查询物理机健康事件异常",e);
}finally {
if (Objects.nonNull(bufferedReader)){
try {
bufferedReader.close();
}catch (IOException io){
LOGGER.error("Io流关闭异常",io);
}
}
if (Objects.nonNull(channelExec)){
channelExec.disconnect();
}
if (Objects.nonNull(channel)){
channel.disconnect();
}
if (Objects.nonNull(session)){
session.disconnect();
}
}
}
}
```