`
knight_black_bob
  • 浏览: 842864 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

scp ssh java 实例

    博客分类:
  • java
阅读更多

 

 

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-ssh2 远程连接java实例代码

    Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。可以利用它直接在Java程序中连接SSH服务器。Ganymed SSH-2支持SSH对话(远程命令执行和shell访问),本地和远程...该资源是java远程连接ssh服务器的实例代码。

    java调SCP java调SCP.rar

    Java调用SCP(Secure Copy Protocol)是将文件安全地从一台计算机传输到另一台使用SSH(Secure Shell)协议的服务器上的常见操作。在Java中,我们可以利用第三方库,如JSch,来实现SCP命令的功能。以下是一些关于...

    javaSSH2整合

    JSch是一个纯Java实现的SSH2库,它允许Java开发者执行命令、打开shell、建立SCP和SFTP(SSH File Transfer Protocol)连接。以下是一些关于Java SSH2整合的关键知识点: 1. **JSch库的引入**:首先,你需要在项目中...

    ssh+lucene搜索实例

    在这个"ssh+lucene搜索实例"中,我们可以理解为结合了SSH和Lucene两个技术,以实现远程服务器上的全文检索功能。例如,可能有一个需求是在多个远程服务器上存储大量数据,而这些数据需要通过关键词进行快速搜索。在...

    SSH实例+源代码!!!!!!!!

    这个"SSH实例+源代码"的压缩包文件显然包含了有关如何配置和使用SSH的实际示例代码,这对于初学者来说是非常有价值的参考资料。下面将详细解释SSH的相关知识点。 **SSH的基本原理** SSH通过加密所有传输的数据,...

    java进行ssh协议连接的jar包jsch-0.1.54.jar

    Java中的JSCH库(JSch)是实现SSH连接的开源库,它提供了全面的功能,包括SFTP(SSH File Transfer Protocol)、SCP(Secure Copy)以及shell会话等。在本文中,我们将深入探讨如何使用JSch-0.1.54.jar这个库来实现...

    (接上篇博客)Java SSH远程执行Shell脚本实现

    JSch是一个纯Java实现的SSH2库,提供了对SFTP、SCP和SSH命令的支持。要使用JSch,你需要将其添加到项目的类路径中。 下面是一些关键步骤来实现SSH远程执行Shell脚本: 1. **创建JSch实例**: 首先,我们需要创建...

    ssh协议依赖jar包:ganymed-ssh2-build

    在Java环境中,开发人员通常使用库来实现SSH功能,其中一个常用的库就是Ganymed SSH-2。这个库名为ganymed-ssh2-build,它允许Java应用程序与远程服务器建立SSH连接,执行命令,传输文件等。 Ganymed SSH-2库是由...

    ssh2jar包ssh2框架jar包

    4. **文件传输**:SSH2框架提供了SCP(Secure Copy)和SFTP(Secure File Transfer Protocol)协议,支持安全的文件上传和下载。 5. **远程命令执行**:SSH2jar包允许用户在远程服务器上执行命令,方便进行系统管理...

    java操作linux工具包

    在 Java 中,我们可以利用各种开源库如 JSch (Java Secure Channel) 来实现 SSH 协议下的 SCP (Secure Copy Protocol) 功能。 JSch 是一个纯 Java 实现的 SSH2 客户端库,它提供了对 SFTP(SSH 文件传输协议)的...

    SSH2环境搭建Jar包

    在Java环境中,SSH2通常指的是通过Java API实现的SSH2库,如JSch或Apache MINA,它们允许开发人员在应用程序中集成SSH连接功能。本文将详细介绍如何在Java项目中搭建SSH2环境,并利用相关的Jar包进行开发。 首先,...

    ssh2较全的jar包

    4. **会话层**:SSH2协议定义了一种会话层,可以承载多种应用层协议,如SFTP(Secure File Transfer Protocol)和SCP(Secure Copy Protocol)。 在Java开发中,使用SSH2的jar包可以帮助实现以下功能: 1. **远程...

    ssh2开发必备jar包

    在Java EE开发环境中,SSH2通常指的是基于Java的SSH库,如JSch,它允许开发者实现Secure Copy (scp), Secure File Transfer Protocol (sftp), 和 Secure Shell (ssh)等功能。在Eclipse这样的集成开发环境中,这些jar...

    ssh导出cvs到客户端

    设置SSH连接,登录到远程服务器,然后使用`sftp`命令或者SCP协议将CSV文件传输到客户端。这个过程通常涉及以下步骤: - 创建JSch实例并配置SSH连接参数(如用户名、密码或私钥)。 - 建立SSH会话,并打开SFTP通道...

    SSH_Demo案例

    这些文件共同构成了一个完整的SSH应用实例,可以帮助初学者理解如何在实际项目中运用SSH框架。 通过学习和分析这个SSH_Demo案例,你可以掌握SSH框架的使用,理解它们之间的协作方式,以及如何在MyEclipse中配置和...

    linux和阿里云下安装JAVA1.8

    2. 上传jar文件:将生成的jar文件通过FTP、SCP或阿里云OSS上传到ECS实例。 3. 运行Spring Boot应用: ```bash nohup java -jar your-spring-boot-app.jar & ``` 使用`nohup`命令确保应用在后台运行,并忽略挂断...

    android 集合SSH客户端实现登录,并保持session访问服务端数据

    在Android中,我们可以使用JSch库,这是一个Java实现的SSH2库,可以实现SFTP、SCP和SSH的会话。JSch库提供了丰富的API,方便我们在Android应用中实现SSH连接和会话管理。 1. **集成JSch库** - 在Android项目中,将...

    SSH2集成+ant打包

    SSH2集成了Secure Copy (SCP)、Secure File Transfer Protocol (SFTP)、远程命令执行等功能,是开发人员在部署和管理分布式系统时的重要工具。而Ant是一个由Apache软件基金会开发的Java构建工具,它使用XML来定义...

    ssh搭建所需的jar包

    在Java环境中,SSH的实现主要依赖于第三方库,例如JSch,它是一个纯Java实现的SSH2库,支持SFTP(Secure File Transfer Protocol)和SCP(Secure Copy)。 首先,你需要从JSch的官方网站或者通过Maven仓库下载JSch...

    ssh开源开发API-JSCH.zip

    JSCH(Java Secure Channel)是SSH的一个开源实现,它为Java开发者提供了一个API,可以方便地创建SSH连接,执行命令,进行文件传输等操作。这个API允许开发者在Java应用中集成SSH功能,例如用于自动化运维、远程脚本...

Global site tag (gtag.js) - Google Analytics