博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java scp client_SCPClient远程拉取文件
阅读量:5107 次
发布时间:2019-06-13

本文共 2094 字,大约阅读时间需要 6 分钟。

在从服务器上拉取测试报告的时候,我查到了可以使用SCPClient,但是有个问题,就是这个只能拉取文件,不能拉取文件夹。不过这也是个知识点,现在我们也总结一下:

SCPClient是一个基本的java操作类,其可以从服务器复制文件到SSH-2服务器,或者从服务器上scp出文件到本地服务器;其操作的scp路径必须是存在与服务器上的,否则会报错。

1, 本地文件复制到远程目录

创建时使用的模式0600 即rw

public void put(String localFile, String remoteTargetDirectory) throws IOException

{

put(new String[] { localFile }, remoteTargetDirectory, "0600");

}

2,从远程服务器下载一组文件到本地目录

public void get(String remoteFiles[], String localTargetDirectory) throws IOException

通过网上的介绍,我们现在想到,如果要把测试报告从远程服务器上获取下来,需要有如下的操作:

(1)在本地先建立一个存放测试报告的文件夹,建立的时候先检测,文件夹是否存在,如果不存在则新建。

(2)连接到远程服务器上,然后执行 “ls 报告所在的文件夹”列出所有的文件。

(3)按行获取出所有的文件名,并使用get函数将所有的文件拉取到本地。

经过这三步的循环操作,就能将远程服务器特定目录下的文件给复制到本地。示例代码如下:

package qataskclient;

import java.io.BufferedReader;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import ch.ethz.ssh2.Connection;

import ch.ethz.ssh2.SCPClient;

import ch.ethz.ssh2.Session;

import ch.ethz.ssh2.StreamGobbler;

class PullFiles{

public static void main(String[] args)

{

String user = "******";

String pass = "*******";

String host = "XXX.XXX.118.39";

String path="sxftest";

//建立远程连接

Connection con = new Connection(host);

try {

con.connect();

boolean isAuthed = con.authenticateWithPassword(user, pass);

System.out.println("isAuthed===="+isAuthed);

File folder = new File("d://opt//"+path);

if (!folder.exists())

{

folder.mkdir();

}

SCPClient scpClient = con.createSCPClient();

Session session = con.openSession();

session.execCommand("ls /root/"+path); //进入目录

//显示执行命令后的信息

System.out.println("Here is some information about the remote host:");

InputStream stdout = new StreamGobbler(session.getStdout());

BufferedReader br = new BufferedReader(new InputStreamReader(stdout));

while (true)

{

String line = br.readLine();

if (line == null)

break;

scpClient.get("/root/"+path+"/"+line,"d://opt//"+path);

System.out.println(line);

}

System.out.println("ExitCode: " + session.getExitStatus());

//关闭远程连接

session.close();

con.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

同样我们也可以用类似的方法现实现向服务器上传文件,根据具体的问题,稍微修改一下代码即可,所以在此我们不再给出示例代码。

转载地址:http://oqudv.baihongyu.com/

你可能感兴趣的文章
终于搞定Fastreport2.x PDF输出,相信其他版本也差不多
查看>>
c++ Oracle OCCI 编程
查看>>
Appium学习笔记||九、操作不可见元素
查看>>
博弈论
查看>>
培养人脉的106个技巧
查看>>
[Android]热修复框架AndFix测试说明
查看>>
像gal一样讲故事~
查看>>
leetcoode刷题 01
查看>>
python基础-异常处理
查看>>
单例传值
查看>>
Codeforces 888D Almost Identity Permutations:错排公式
查看>>
django 一些库
查看>>
R-Project小记(一)
查看>>
例题4-10/4-11
查看>>
v8 Date 时间和系统时间转换
查看>>
hdu 3371(kruskal)
查看>>
常用排序算法总结
查看>>
定义与声明
查看>>
环信联合创始人: Saas敏捷开发实践!
查看>>
九度OJ做题记录 更新.....
查看>>