JSCH执行linux命令

pom.xml 添加jar依赖

<!-- https://mvnrepository.com/artifact/com.jcraft/jsch -->
<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.54</version>
</dependency>

 

java类

复制代码
package com.aliyun.utility.jsch;

import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

import java.io.InputStream;

import java.util.Properties;


public class JSCHUtil {
    private static JSCHUtil instance;

    private JSCHUtil() {
    }

    public static JSCHUtil getInstance() {
        if (instance == null) {
            instance = new JSCHUtil();
        }

        return instance;
    }

    private Session getSession(String host, int port, String ueseName)
        throws Exception {
        JSch jsch = new JSch();
        Session session = jsch.getSession(ueseName, host, port);

        return session;
    }

    public Session connect(String host, int port, String ueseName,
        String password) throws Exception {
        Session session = getSession(host, port, ueseName);
        session.setPassword(password);

        Properties config = new Properties();
        config.setProperty("StrictHostKeyChecking", "no");
        session.setConfig(config);
        session.connect();

        return session;
    }

    public String execCmd(Session session, String command)
        throws Exception {
        if (session == null) {
            throw new RuntimeException("Session is null!");
        }

        ChannelExec exec = (ChannelExec) session.openChannel("exec");
        InputStream in = exec.getInputStream();
        byte[] b = new byte[1024];

        exec.setCommand(command);
        exec.connect();

        StringBuffer buffer = new StringBuffer();

        while (in.read(b) > 0) {
            buffer.append(new String(b));
        }

        exec.disconnect();

        return buffer.toString();
    }

    public void clear(Session session) {
        if ((session != null) && session.isConnected()) {
            session.disconnect();
            session = null;
        }
    }

    public static void main(String[] args) throws Exception {
        Session session = JSCHUtil.getInstance()
                                  .connect("10.9.9.135", 22, "yy", "yy");
        String cmd = "cd /" + ";" + "ls -al |grep home";
        String result = JSCHUtil.getInstance().execCmd(session, cmd); // ???????;?? 
        System.out.println(result);
        System.exit(0);
    }
}
复制代码

 

posted @   亲爱的阿道君  阅读(4207)  评论(1编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
点击右上角即可分享
微信分享提示