使用ganymed-ssh2-build.jar上传到linux服务器指定文件夹
1.在pom文件添加依赖:
<dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>build210</version> </dependency>
2.上传到linux服务器指定文件夹方法 代码如下:
package com.longjin.comm.utils; import ch.ethz.ssh2.*; import java.io.*; import java.net.HttpURLConnection; /** * @Description:上传文件到指定服务器目录 * @Author 何志鹏 * @Date 2020/6/11 23:14 * @Version 1.0 */ public class GanymedSsh2Utils { /** * 上传pdf到指定服务器中 * * @param dataServerIp linux环境ip * @param dataServerUsername linux环境用户名 * @param dataServerPassword linux环境登录密码 * @param dataServerDestDir linux环境文件目录 * @param localDir 本地上传目录 */ public static void uploadPdf(String dataServerIp,String dataServerUsername,String dataServerPassword, String dataServerDestDir,String localDir ){ //文件scp到数据服务器 Connection conn = new Connection(dataServerIp); SFTPv3Client sftpClient = null; Session session = null; System.out.println("开始scp文件"); try { conn.connect(); boolean isAuthenticated = conn.authenticateWithPassword(dataServerUsername, dataServerPassword); if (isAuthenticated == false) throw new IOException("Authentication failed.文件scp到数据服务器时发生异常"); //执行远程命令,成功 session = conn.openSession(); session.execCommand("cd "+dataServerDestDir);//分号隔开执行多条指令 //显示执行命令后的信息 InputStream stdout = new StreamGobbler(session.getStdout()); BufferedReader br = new BufferedReader(new InputStreamReader(stdout)); while (true) { String line = br.readLine(); if (line == null) { System.out.println("session,远程服务器返回信息:空"); break; } System.out.println("session,远程服务器返回信息:" + line); } //获得退出状态 System.out.println("session,ExitCode: " + session.getExitStatus());//返回0 表示命令执行成功;返回1 表示执行失败 session.close(); //远程文件复制到本地成功 SCPClient client = new SCPClient(conn); File file = new File(localDir); File[] files = file.listFiles(); for(int i = 0;i<files.length;i++){ System.err.println(files[i]); client.put(files[i].toString(), dataServerDestDir,"0644");//上传到Linux文件目录 0644是指定读取权限 } // client.get(dataServerDestDir + "10092/input/10092.zip", localDir); //成功,远程scp到本地 } catch (IOException e) { e.printStackTrace(); System.out.println("文件scp到数据服务器时发生异常"); if (conn != null) { conn.close(); } if (sftpClient != null) { sftpClient.close(); } if (session != null) { session.close(); } } finally { if (conn != null) { conn.close(); } if (sftpClient != null) { sftpClient.close(); } if (session != null) { session.close(); } } } }
3.main方法调用上传结果如下: