工具类二十一 基于JSch远程监控Linux服务器工具类

本文介绍了如何利用JSch库建立SSH连接,实现对Linux服务器的远程监控,包括硬盘信息统计和网络情况检查。同时推荐了基于oshi的本机服务器监控方案。
摘要由CSDN通过智能技术生成

JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等>。
如果需要监控本机,推荐我上一篇博文工具类二十基于oshi监控服务器

依赖

 <!-- 流量采集工具包 -->
<!--        <dependency>-->
<!--            <groupId>org.fusesource</groupId>-->
<!--            <artifactId>sigar</artifactId>-->
<!--            <version>1.6.4</version>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!-- 远程连接指令 -->
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.55</version>
        </dependency>

核心SSH连接工具类

package com.test.drc.util;

import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import org.apache.commons.io.IOUtils;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;


public class SSHLinux {
   

//    public static void main(String[] args) throws IOException, JSchException {
   
//        String host = "192.168.7.212";
//        int port = 22;
//        String user = "root";
//        String password = "XXX!@#212";
//        String command = "du -sh /opt/jdyp/mysql";
//        List<String> res = exeCommand(host, port, user, password, command);
//        res.forEach(it -> {
   
//            System.out.println(it);
//        });
//
//    }

    public static List<String> exeCommand(String host, int port, String user, String password, String command) {
   

        List<String> out = null;
        ChannelExec channelExec = null;
        Session session = null;
        try {
   
            JSch jsch = new JSch();
            session = jsch.getSession(user, host, port);
            session.setConfig("StrictHostKeyChecking", "no");
            session.setPassword(password);
            session.connect(10000);

            channelExec = (ChannelExec) session.openChannel("exec");
            InputStream in = channelExec.getInputStream();
            channelExec.setCommand(command);
            channelExec.setErrStream(System.err);
            channelExec.connect(50000);
            out = IOUtils.readLines(in, "UTF-8");

            channelExec.disconnect();
            session.disconnect();
        } catch (JSchException e) {
   
            e.printStackTrace();
        } catch (IOException e) {
   
            e.printStackTrace(</
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值