pom
</dependency> <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>build210</version> </dependency>
package com.taskschedule.util; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.log4j.Logger; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.SCPClient; import ch.ethz.ssh2.SFTPException; import ch.ethz.ssh2.SFTPv3Client; import ch.ethz.ssh2.Session; import ch.ethz.ssh2.StreamGobbler; /** * * @author baoyou E-mail:curiousby@163.com * @version 2016年11月2日 下午1:54:43 * desc: */ public class Scp { private static Logger logger = Logger.getLogger(Scp.class); /** * 远程文件传输,如果local参数是文件,则本地传输到远程;如果是目录,则远程传输到本地 * @param remoteIp 远程主机IP或hostname * @param port 远程主机端口号 * @param user 远程主机用户名 * @param password 远程主机对应密码 * @param local 本地主机文件名(本地->远程);本地主机目录名(远程->本地) * @param remote 远程主机目录名(本地->远程);远程主机文件名(远程->本地) * @return 返回0:成功。1:失败 */ public static int scpFile(String remoteIp, int port, String user, String password, String local, String remote) { Connection con = new Connection(remoteIp, port); try { con.connect(); boolean isAuthed = con.authenticateWithPassword(user, password); if (!isAuthed) { logger.error("远程主机" + remoteIp + "用户名或密码验证失败!"); return SystemGlobal.FAILED; } SCPClient scpClient = con.createSCPClient(); File localFile = new File(local); if (localFile.isFile()) { if (!localFile.exists()) { logger.error("本地文件" + local + "不存在,无法传输!"); return SystemGlobal.FAILED; } else { try { SFTPv3Client sftpClient = new SFTPv3Client(con); sftpClient.mkdir(remote, 0777); //远程新建目录 } catch (SFTPException e1) { logger.info("目录" + remote + "已存在,无需再创建。"); } try { scpClient.put(local, remote, "0777"); } catch (IOException e2) { logger.error("路径" + remote + "不是一个文件夹。"); return SystemGlobal.FAILED; } String filename = local.substring(local.lastIndexOf('/') + 1); Session session = con.openSession(); session.execCommand("ls -l " + remote + "/" + filename); InputStream is = new StreamGobbler(session.getStdout()); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line = br.readLine(); br.close(); is.close(); session.close(); logger.info("上传到远程主机上的文件为:" + line); if (!TaskUtil.isStrEmpty(line)) { return SystemGlobal.SUCCESS; } } } else { if (!localFile.exists()) { localFile.mkdirs(); } scpClient.get(remote, local); String filename = remote.substring(remote.lastIndexOf('/') + 1); if (new File(local + "/" + filename).exists()) { return SystemGlobal.SUCCESS; } } } catch (Exception e) { e.printStackTrace(); } con.close(); return SystemGlobal.FAILED; } }
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。可以利用它直接在Java程序中连接SSH服务器。Ganymed SSH-2支持SSH对话(远程命令执行和shell访问),本地和远程...该资源是java远程连接ssh服务器的实例代码。
Java调用SCP(Secure Copy Protocol)是将文件安全地从一台计算机传输到另一台使用SSH(Secure Shell)协议的服务器上的常见操作。在Java中,我们可以利用第三方库,如JSch,来实现SCP命令的功能。以下是一些关于...
JSch是一个纯Java实现的SSH2库,它允许Java开发者执行命令、打开shell、建立SCP和SFTP(SSH File Transfer Protocol)连接。以下是一些关于Java SSH2整合的关键知识点: 1. **JSch库的引入**:首先,你需要在项目中...
在这个"ssh+lucene搜索实例"中,我们可以理解为结合了SSH和Lucene两个技术,以实现远程服务器上的全文检索功能。例如,可能有一个需求是在多个远程服务器上存储大量数据,而这些数据需要通过关键词进行快速搜索。在...
这个"SSH实例+源代码"的压缩包文件显然包含了有关如何配置和使用SSH的实际示例代码,这对于初学者来说是非常有价值的参考资料。下面将详细解释SSH的相关知识点。 **SSH的基本原理** SSH通过加密所有传输的数据,...
Java中的JSCH库(JSch)是实现SSH连接的开源库,它提供了全面的功能,包括SFTP(SSH File Transfer Protocol)、SCP(Secure Copy)以及shell会话等。在本文中,我们将深入探讨如何使用JSch-0.1.54.jar这个库来实现...
JSch是一个纯Java实现的SSH2库,提供了对SFTP、SCP和SSH命令的支持。要使用JSch,你需要将其添加到项目的类路径中。 下面是一些关键步骤来实现SSH远程执行Shell脚本: 1. **创建JSch实例**: 首先,我们需要创建...
在Java环境中,开发人员通常使用库来实现SSH功能,其中一个常用的库就是Ganymed SSH-2。这个库名为ganymed-ssh2-build,它允许Java应用程序与远程服务器建立SSH连接,执行命令,传输文件等。 Ganymed SSH-2库是由...
4. **文件传输**:SSH2框架提供了SCP(Secure Copy)和SFTP(Secure File Transfer Protocol)协议,支持安全的文件上传和下载。 5. **远程命令执行**:SSH2jar包允许用户在远程服务器上执行命令,方便进行系统管理...
在 Java 中,我们可以利用各种开源库如 JSch (Java Secure Channel) 来实现 SSH 协议下的 SCP (Secure Copy Protocol) 功能。 JSch 是一个纯 Java 实现的 SSH2 客户端库,它提供了对 SFTP(SSH 文件传输协议)的...
在Java环境中,SSH2通常指的是通过Java API实现的SSH2库,如JSch或Apache MINA,它们允许开发人员在应用程序中集成SSH连接功能。本文将详细介绍如何在Java项目中搭建SSH2环境,并利用相关的Jar包进行开发。 首先,...
4. **会话层**:SSH2协议定义了一种会话层,可以承载多种应用层协议,如SFTP(Secure File Transfer Protocol)和SCP(Secure Copy Protocol)。 在Java开发中,使用SSH2的jar包可以帮助实现以下功能: 1. **远程...
在Java EE开发环境中,SSH2通常指的是基于Java的SSH库,如JSch,它允许开发者实现Secure Copy (scp), Secure File Transfer Protocol (sftp), 和 Secure Shell (ssh)等功能。在Eclipse这样的集成开发环境中,这些jar...
设置SSH连接,登录到远程服务器,然后使用`sftp`命令或者SCP协议将CSV文件传输到客户端。这个过程通常涉及以下步骤: - 创建JSch实例并配置SSH连接参数(如用户名、密码或私钥)。 - 建立SSH会话,并打开SFTP通道...
这些文件共同构成了一个完整的SSH应用实例,可以帮助初学者理解如何在实际项目中运用SSH框架。 通过学习和分析这个SSH_Demo案例,你可以掌握SSH框架的使用,理解它们之间的协作方式,以及如何在MyEclipse中配置和...
2. 上传jar文件:将生成的jar文件通过FTP、SCP或阿里云OSS上传到ECS实例。 3. 运行Spring Boot应用: ```bash nohup java -jar your-spring-boot-app.jar & ``` 使用`nohup`命令确保应用在后台运行,并忽略挂断...
在Android中,我们可以使用JSch库,这是一个Java实现的SSH2库,可以实现SFTP、SCP和SSH的会话。JSch库提供了丰富的API,方便我们在Android应用中实现SSH连接和会话管理。 1. **集成JSch库** - 在Android项目中,将...
SSH2集成了Secure Copy (SCP)、Secure File Transfer Protocol (SFTP)、远程命令执行等功能,是开发人员在部署和管理分布式系统时的重要工具。而Ant是一个由Apache软件基金会开发的Java构建工具,它使用XML来定义...
在Java环境中,SSH的实现主要依赖于第三方库,例如JSch,它是一个纯Java实现的SSH2库,支持SFTP(Secure File Transfer Protocol)和SCP(Secure Copy)。 首先,你需要从JSch的官方网站或者通过Maven仓库下载JSch...
JSCH(Java Secure Channel)是SSH的一个开源实现,它为Java开发者提供了一个API,可以方便地创建SSH连接,执行命令,进行文件传输等操作。这个API允许开发者在Java应用中集成SSH功能,例如用于自动化运维、远程脚本...