從遠程服務器上拷貝文件到本機: SCPClient 使用簡單記錄

 一、依賴

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

 二、邏輯實現

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
import ch.ethz.ssh2.SCPInputStream;

import java.io.File;
import java.io.FileOutputStream;

/**
 * @author 
 * @name
 * @desc
 * @jdk 1.8
 * @os Deepin
 * @date 2019/7/13.
 */
public class CopyFile {

    public static void main(String[] args) {
        try {
            // 遠程機器ip
            String ip = "134.256.11.10";
            // ssh端口
            int port = 22;
            // ssh登錄 用戶名 密碼
            String pwd = "9857q*qCE1zbbcgc";
            String user = "root";

            // 創建鏈接
            Connection conn = new Connection(ip, port);
            conn.connect();
            // 登錄
            conn.authenticateWithPassword(user, pwd);

            // 獲取SCPClient
            SCPClient sc = conn.createSCPClient();
            // 獲取遠程機器上的文件流 (遠程文件地址的絕對路徑)
            SCPInputStream is = sc.get("/usr/local/server/test.xml");
            // 創建本機文件寫入流
            FileOutputStream os = new FileOutputStream(new File("/home/bing/server/test.xml"));
            // 將文件寫入本地
            byte[] b = new byte[4096];
            int i;
            while ((i = is.read(b)) != -1) {
                os.write(b, 0, i);
            }
            os.flush();
            // copy完成,關閉相應資源
            is.close();
            os.close();
            conn.close();
            System.out.println("copy ok");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章