AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

還不會用Java操作遠程服務器?

來源: 責編: 時間:2024-09-10 09:47:18 88觀看
導讀java操作服務器JSch 是一個純 Java 實現的 SSH2 客戶端庫,它允許 Java 應用程序通過 SSH 協議連接到 SSH 服務器,并執行命令、傳輸文件等。JSch 是基于 SSH-2 協議的一個開源項目,廣泛用于需要遠程執行命令或文件傳輸的

java操作服務器

JSch 是一個純 Java 實現的 SSH2 客戶端庫,它允許 Java 應用程序通過 SSH 協議連接到 SSH 服務器,并執行命令、傳輸文件等。JSch 是基于 SSH-2 協議的一個開源項目,廣泛用于需要遠程執行命令或文件傳輸的 Java 應用程序中。HRa28資訊網——每日最新資訊28at.com

主要特點

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

使用場景

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

引入依賴

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

創建連接

獲取會話

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");// 設置第一次登陸的時候提示            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);        }    }

獲取命令執行連接

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

執行腳本

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();        }    }

執行文件下載

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

執行命令

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

HRa28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-112725-0.html還不會用Java操作遠程服務器?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Go1.23 新特性:爭議最大的 iter 迭代器,可遍歷萬物!

下一篇: 停止使用 `let` 或為什么它在 JavaScript/TypeScript 中是不必要的

標簽:
  • 熱門焦點
Top