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

還不會(huì)用Java操作遠(yuǎn)程服務(wù)器?

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

java操作服務(wù)器

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

主要特點(diǎn)

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

使用場(chǎng)景

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

引入依賴

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

創(chuàng)建連接

獲取會(huì)話

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è)置第一次登陸的時(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();
        }
    }

測(cè)試

獲取會(huì)話

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");

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

2021-03-16 15:12:57

CompletableFuture機(jī)制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)運(yùn)維技術(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)盤

2022-08-12 15:58:34

Docker

2019-11-28 16:48:00

華為Mate X

2018-09-13 10:40:40

Linux命令find

2020-12-07 09:15:00

JavaScript數(shù)組 reduce

2019-09-03 09:30:46

ss 命令SocketLinux

2011-07-27 13:52:02

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

2021-01-28 17:46:13

服務(wù)器遠(yuǎn)程Xshell

2009-02-27 13:53:00

遠(yuǎn)程服務(wù)器RAS

2020-08-26 14:40:38

explainMySQL數(shù)據(jù)庫
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 激情五月综合网 | 91精品久久久久久久久 | 污书屋| 日本久久久久久 | 久久久久久黄 | 婷婷色成人 | 欧美激情一区 | 日韩视频在线播放 | 亚洲视频在线免费 | 久久精品屋| 久草.com | 国产一区视频在线 | 中文字幕在线一区二区三区 | 成人免费在线观看视频 | 国产亚洲精品久久久久动 | 欧美群妇大交群中文字幕 | 一区二区三区国产精品 | 日批免费在线观看 | 中文字幕第90页 | 欧美1区| 久久精品小视频 | 国产精品国产精品国产专区不卡 | 成人免费在线视频 | 黄色免费在线观看网址 | 国产免费一区二区三区网站免费 | 99re在线| 国产一区二区三区 | 在线a视频网站 | 国产亚洲精品久久久久久牛牛 | 美女131mm久久爽爽免费 | 日韩中文字幕免费 | 91婷婷韩国欧美一区二区 | 欧美在线色 | 国产99久久久国产精品下药 | 在线久草| 看a网站 | 欧美亚洲视频在线观看 | 午夜精品久久久久久久久久久久久 | 丁香婷婷综合激情五月色 | 日韩伦理电影免费在线观看 | 久久av网站|