自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

還不會用Java操作遠(yuǎn)程服務(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é)議的一個開源項目,廣泛用于需要遠(yuǎn)程執(zhí)行命令或文件傳輸?shù)?Java 應(yīng)用程序中。

主要特點(diǎn)

  • 純 Java 實現(xiàn):不依賴于任何本地庫或第三方工具,完全用 Java 編寫,因此具有很好的跨平臺性。
  • 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)建安全的隧道。
  • 會話管理:提供會話管理功能,包括會話的創(chuàng)建、認(rèn)證、關(guān)閉等。

使用場景

  • 自動化部署:在自動化部署腳本中,使用 JSch 連接到遠(yuǎn)程服務(wù)器,執(zhí)行部署命令。
  • 遠(yuǎn)程監(jiān)控:通過 SSH 連接遠(yuǎn)程服務(wù)器,執(zhí)行監(jiān)控命令,并獲取監(jiān)控數(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)建連接

獲取會話

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

責(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-27 06:50:56

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

2020-09-01 14:17:03

WindowsDefender微軟

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)盤

2019-11-28 16:48:00

華為Mate X

2022-08-12 15:58:34

Docker

2011-07-27 13:52:02

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

2021-01-28 17:46:13

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

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

2009-02-27 13:53:00

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

2015-05-05 15:24:42

TCPIPVNC遠(yuǎn)程
點(diǎn)贊
收藏

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