欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java操作SSH2實(shí)現(xiàn)遠(yuǎn)程執(zhí)行l(wèi)inux命令

 更新時(shí)間:2025年01月02日 09:35:45   作者:一起喝芬達(dá)2010  
這篇文章主要為大家詳細(xì)介紹了Java如何操作SSH2實(shí)現(xiàn)遠(yuǎn)程執(zhí)行l(wèi)inux命令,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

引入依賴

<dependency>
    <groupId>ch.ethz.ganymed</groupId>
    <artifactId>ganymed-ssh2</artifactId>
    <version>262</version>
</dependency>

SSH2Util 工具類封裝

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class SSH2Util {

    //指定默認(rèn)編碼
    private static String DEFAULT_CHARSET = "UTF-8";

    /**
     * 建立SSH2連接
     * @param host 主機(jī)地址
     * @param username 用戶名
     * @param password 密碼
     * @return Connection
     */
    public static Connection openConnection(String host,String username,String password) {
        try {
            Connection connection = new Connection(host);
            //建立ssh2連接
            connection.connect();
            //檢驗(yàn)用戶名
            boolean login = connection.authenticateWithPassword(username,password);
            if (login){
                logger.info(host + " 連接成功");
                return connection;
            }else {
                throw new RuntimeException(host + " 用戶名密碼不正確");
            }
        } catch (Exception e) {
            throw new RuntimeException(host +" "+ e);
        }
    }

    /**
     * 執(zhí)行命令
     * @param connection ssh2連接對(duì)象
     * @param command 命令語(yǔ)句
     * @return 執(zhí)行結(jié)果, 封裝執(zhí)行狀態(tài)和執(zhí)行結(jié)果
     */
    public static ExecCmdResult execCommand(Connection connection,String command){
        ExecCmdResult execCmdResult = new ExecCmdResult();
        Session session = null;
        try{
            session = connection.openSession();
            //執(zhí)行命令
            session.execCommand(command);
            //解析結(jié)果
            String result = parseResult(session.getStdout());
            //解析結(jié)果為空,則表示執(zhí)行命令發(fā)生了錯(cuò)誤,嘗試解析錯(cuò)誤出輸出
            if (result == null||result.length()==0){
                result = parseResult(session.getStderr());

            }else {
                execCmdResult.setSuccess(true);
            }
            //設(shè)置響應(yīng)結(jié)果
            execCmdResult.setResult(result);
            logger.info(command + " ==>> " +execCmdResult.getResult());
            return execCmdResult;

        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

    public static String parseResult(InputStream inputStream) throws IOException{
        //讀取輸出流內(nèi)容
        BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,DEFAULT_CHARSET));
        StringBuffer resultSB = new StringBuffer();
        String line;
        while((line = br.readLine()) != null){
            resultSB.append(line+"\n");
        }
        //替換換行符
        String result = resultSB.toString().replaceAll("[\\t\\n\\r]", "");
        return result;

    }
}

ExecCmdResult 定義返回結(jié)果類

public class ExecCmdResult {

    //命令執(zhí)行是否成功
    private boolean flag ;
    //輸出結(jié)果
    private String result;

    public void setFlag(boolean success){
        this.flag = success;
    }

    public boolean getFlag() {
        return flag;
    }

    public String getResult(){
        return result;
    }
    public void setResult(String result){
        this.result = result;
    }

}

SSH2Demo 測(cè)試

import ch.ethz.ssh2.Connection;

public class SSH2Demo {

    public static void main(String[] args) {
        try {
            String host = "168.192.22.7";
            String username = "root";
            String password = "123456";
            Connection connection = SSH2Util.openConnection(host,username,password);
            String cpuInfo = "cat /proc/cpuinfo | grep \"cpu cores\" | uniq"; //服務(wù)器核數(shù)
            ExecCmdResult cup = SSH2Util.execCommand(connection,cpuInfo);
            connection.close();
        }
        catch (Exception a){
            a.printStackTrace();
        }
    }
}

到此這篇關(guān)于Java操作SSH2實(shí)現(xiàn)遠(yuǎn)程執(zhí)行l(wèi)inux命令的文章就介紹到這了,更多相關(guān)Java SSH2遠(yuǎn)程執(zhí)行l(wèi)inux命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入理解Maven的坐標(biāo)與依賴

    深入理解Maven的坐標(biāo)與依賴

    這篇文章主要介紹了深入理解Maven的坐標(biāo)與依賴,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-01-01
  • JavaWeb項(xiàng)目FullCalendar日歷插件使用的示例代碼

    JavaWeb項(xiàng)目FullCalendar日歷插件使用的示例代碼

    本篇文章主要介紹了JavaWeb項(xiàng)目FullCalendar日歷插件使用的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • java實(shí)現(xiàn)分段讀取文件并通過HTTP上傳的方法

    java實(shí)現(xiàn)分段讀取文件并通過HTTP上傳的方法

    這篇文章主要介紹了java實(shí)現(xiàn)分段讀取文件并通過HTTP上傳的方法,實(shí)例分析了java分段讀取文件及使用http實(shí)現(xiàn)文件傳輸?shù)南嚓P(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Java fastjson解析json字符串實(shí)現(xiàn)過程解析

    Java fastjson解析json字符串實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Java fastjson解析json字符串實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 關(guān)于HashMap源碼解讀

    關(guān)于HashMap源碼解讀

    HashMap是基于哈希表的Map接口實(shí)現(xiàn),主要用于存儲(chǔ)鍵值對(duì),它通過數(shù)組、鏈表和紅黑樹來(lái)實(shí)現(xiàn),解決了哈希沖突問題,Java?8中,HashMap對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行了優(yōu)化,引入紅黑樹來(lái)提高查找效率,此外,HashMap是非線程安全的,適用于單線程環(huán)境
    2024-09-09
  • 使用java對(duì)一副撲克牌建模

    使用java對(duì)一副撲克牌建模

    這篇文章主要為大家詳細(xì)介紹了如何使用java對(duì)一副撲克牌建模,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • java判斷一個(gè)字符串是否是小數(shù)的方法

    java判斷一個(gè)字符串是否是小數(shù)的方法

    在本篇文章里小編給大家整理的是關(guān)于java判斷一個(gè)字符串是否是小數(shù)的方法,有需要的朋友們學(xué)習(xí)下。
    2019-11-11
  • 使用SpringAOP獲取用戶操作日志入庫(kù)

    使用SpringAOP獲取用戶操作日志入庫(kù)

    這篇文章主要介紹了使用SpringAOP獲取用戶操作日志入庫(kù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • JavaWeb中文編碼問題實(shí)例講解

    JavaWeb中文編碼問題實(shí)例講解

    在本篇文章里小編給大家整理的是關(guān)于JavaWeb中文編碼問題方法的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下
    2019-09-09
  • SpringBoot+Querydsl?框架實(shí)現(xiàn)復(fù)雜查詢解析

    SpringBoot+Querydsl?框架實(shí)現(xiàn)復(fù)雜查詢解析

    本篇主要將介紹的是利用spring query dsl框架實(shí)現(xiàn)的服務(wù)端查詢解析和實(shí)現(xiàn)介紹,對(duì)SpringBoot?Querydsl?查詢操作感興趣的朋友一起看看吧
    2022-05-05

最新評(píng)論