从远程服务器上拷贝文件到本机: 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());
        }
    }
}

 

 

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