成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

還不會用Java操作遠程服務(wù)器?

開發(fā) 前端
JSch 是一個純 Java 實現(xiàn)的 SSH2 客戶端庫,它允許 Java 應(yīng)用程序通過 SSH 協(xié)議連接到 SSH 服務(wù)器,并執(zhí)行命令、傳輸文件等。

java操作服務(wù)器

JSch 是一個純 Java 實現(xiàn)的 SSH2 客戶端庫,它允許 Java 應(yīng)用程序通過 SSH 協(xié)議連接到 SSH 服務(wù)器,并執(zhí)行命令、傳輸文件等。JSch 是基于 SSH-2 協(xié)議的一個開源項目,廣泛用于需要遠程執(zhí)行命令或文件傳輸?shù)?Java 應(yīng)用程序中。

主要特點

  • 純 Java 實現(xiàn):不依賴于任何本地庫或第三方工具,完全用 Java 編寫,因此具有很好的跨平臺性。
  • SSH2 協(xié)議支持:支持 SSH-2 協(xié)議,包括密鑰認證、密碼認證、公鑰認證等多種認證方式。
  • 命令執(zhí)行:允許通過 SSH 連接執(zhí)行遠程命令,并獲取命令的輸出結(jié)果。
  • 文件傳輸:支持 SFTP(SSH File Transfer Protocol)協(xié)議,用于在客戶端和服務(wù)器之間安全地傳輸文件。
  • 端口轉(zhuǎn)發(fā):支持本地端口轉(zhuǎn)發(fā)和遠程端口轉(zhuǎn)發(fā),可以用于創(chuàng)建安全的隧道。
  • 會話管理:提供會話管理功能,包括會話的創(chuàng)建、認證、關(guān)閉等。

使用場景

  • 自動化部署:在自動化部署腳本中,使用 JSch 連接到遠程服務(wù)器,執(zhí)行部署命令。
  • 遠程監(jiān)控:通過 SSH 連接遠程服務(wù)器,執(zhí)行監(jiān)控命令,并獲取監(jiān)控數(shù)據(jù)。
  • 文件同步:使用 SFTP 協(xié)議安全地同步文件到遠程服務(wù)器或從遠程服務(wù)器下載文件。
  • 遠程執(zhí)行腳本:在遠程服務(wù)器上執(zhí)行腳本或程序,并獲取執(zhí)行結(jié)果。

引入依賴

<dependency>
      <groupId>com.github.mwiede</groupId>
      <artifactId>jsch</artifactId>
      <version>0.2.19</version>
    </dependency>

創(chuàng)建連接

獲取會話

public Session getSession(){
        if( this.session != null ){
            return this.session;
        }
        try {
            jsch.getSession(property.getUsername(), property.getHost(), property.getPort());
            session = jsch.getSession(property.getUsername(), property.getHost(), property.getPort());
            session.setPassword(property.getPassword());
            session.setConfig("StrictHostKeyChecking","no");// 設(shè)置第一次登陸的時候提示
            session.setConfig("max_input_buffer_size","1024");//

            Properties sshConfig = new Properties();
            sshConfig.put("StrictHostKeyChecking", "no");
            session.setConfig(sshConfig);
            session.connect();
            return session;
        } catch (JSchException e) {
            throw new RuntimeException(e);
        }
    }

獲取Sftp連接

public static ChannelSftp getSftp(Session session){
        try {
            Channel channel = session.openChannel("sftp");
            channel.connect();

            ChannelSftp sftp = (ChannelSftp) channel;
            sftp.setFilenameEncoding("UTF-8");
            return sftp;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

獲取命令執(zhí)行連接

public static ChannelExec getExec(Session session){
        try {
            Channel channel = session.openChannel("exec");
//            channel.connect();
            ChannelExec exec = (ChannelExec) channel;
            return exec;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

執(zhí)行腳本

public static void execCommand(ChannelExec exec,String command){
        try {
            exec.setCommand(command);
            InputStream in = exec.getInputStream();
            exec.connect();

            BufferedReader inputReader = new BufferedReader(new InputStreamReader(in, "UTF8"));
            String inputLine;
            while ((inputLine = inputReader.readLine()) != null) {
                System.out.println(inputLine);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            exec.disconnect();
        }
    }

執(zhí)行文件下載

public static void fileDownload(ChannelSftp sftp, String path,String dist){
        try {
            InputStream is = sftp.get(path);
            FileUtils.copyInputStreamToFile(is, FileUtils.getFile(dist,FilenameUtils.getName(path)));
            is.close();
        } catch (SftpException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

測試

獲取會話

public static Session getSession(){
    ConnectProperty property = new ConnectProperty();
    property.setHost("...");
    property.setPort(22);
    property.setUsername("...");
    property.setPassword("...");

    ConnectHelper helper = new ConnectHelper(property);
    return helper.getSession();
}

下載文件

public static void download(Session session){
    ChannelSftp sftp = ConnectHelper.getSftp(session);
    ConnectHelper.fileDownload(sftp,"/home/test/1.txt","E:\\home\\tmp");
}

執(zhí)行命令

public static void execCommand(Session session){
    ChannelExec exec = ConnectHelper.getExec(session);
    ConnectHelper.execCommand(exec, "pwd");

責任編輯:武曉燕 來源: Java技術(shù)指北
相關(guān)推薦

2021-03-16 15:12:57

CompletableFuture機制java

2020-05-14 08:59:28

API網(wǎng)關(guān)性能

2022-02-22 08:25:51

typeScript泛型概念泛型使用

2020-10-21 10:02:16

架構(gòu)運維技術(shù)

2024-08-12 12:25:25

SpringMVC開發(fā)

2020-09-01 14:17:03

WindowsDefender微軟

2020-09-27 06:50:56

Java互聯(lián)網(wǎng)注解

2020-09-15 09:50:47

程序員技能開發(fā)者

2020-12-18 09:45:33

DockerLinux命令

2020-11-09 09:03:35

高并發(fā)多線程ThreadLocal

2012-05-02 15:38:49

金山快盤網(wǎng)盤

2018-09-13 10:40:40

Linux命令find

2019-09-03 09:30:46

ss 命令SocketLinux

2020-12-07 09:15:00

JavaScript數(shù)組 reduce

2022-08-12 15:58:34

Docker

2019-11-28 16:48:00

華為Mate X

2011-07-27 13:52:02

Oracle數(shù)據(jù)庫遠程服務(wù)器

2021-01-28 17:46:13

服務(wù)器遠程Xshell

2009-02-27 13:53:00

遠程服務(wù)器RAS

2015-05-05 15:24:42

TCPIPVNC遠程
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: a在线观看 | 久久久噜噜噜久久中文字幕色伊伊 | 亚洲天堂男人的天堂 | 天天插天天舔 | 亚洲精品视频二区 | 亚洲成人a v | 亚洲网址在线观看 | 伊人免费观看视频 | 久久久精 | 亚洲成人精品在线 | 国产精品视频一二三 | 久久人 | 日韩中文字幕一区二区 | 日本久久网 | 亚洲欧美在线视频 | 欧美一区二区综合 | 一区二区三区国产 | 一级做a爰片性色毛片视频停止 | 久久国 | 亚洲一区视频 | 涩涩视频网站在线观看 | 亚洲综合婷婷 | 中文字幕亚洲一区二区va在线 | 亚洲精品免费看 | 久久久久国产精品一区 | 国产欧美一区二区三区日本久久久 | 亚洲 中文 欧美 日韩 在线观看 | 中文字幕一区二区三区精彩视频 | 欧美黄色一区 | 欧美日韩不卡 | 国产美女一区二区 | 一级片视频免费观看 | 精品一区二区三区四区在线 | 国产农村妇女精品一二区 | 久久精品毛片 | av一区二区三区四区 | 日韩精品一区二区三区免费观看 | 欧美激情久久久 | 欧洲一区在线观看 | 欧美激情欧美激情在线五月 | 国产成人精品一区二区三区四区 |