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

J2SSH Maverick 一段连接sftp服务器,上传,下载的代码:

阅读更多

J2SSH Maverick
Version 1.2.6

一段连接sftp服务器,上传,下载的代码:
import com.maverick.ssh.*;
import com.maverick.ssh1.Ssh1Client;
import com.maverick.ssh2.*;
import java.io.*;
import com.sshtools.net.*;
import com.sshtools.sftp.*;
import com.maverick.sftp.*;
import com.sshtools.publickey.ConsoleKnownHostsKeyVerification;
/**
 * This example demonstrates the connection process connecting to an SSH2 server and
 * usage of the SFTP client.
 *
 * @author Lee David Painter
 * @version $Id: SftpConnect.java,v 1.8 2006/01/30 17:46:04 lee Exp $
 *
 */
public class SftpConnect {
     public static void main(String[] args) {
          final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
          String str = "user.home";

          try {
               System.out.print("Hostname: ");
              // String hostname = reader.readLine();
               String hostname = "192.168.1.237";
               int idx = hostname.indexOf(':');
               int port = 22;
               if(idx > -1) {
                    port = Integer.parseInt(hostname.substring(idx+1));
                    hostname = hostname.substring(0, idx);
               }
               System.out.print("Username [Enter for " + System.getProperty("user.name") + "]: ");
               //String username = reader.readLine();
               String username = "linuxborder";
               if(username==null || username.trim().equals(""))
                    username = System.getProperty("user.name");
               System.out.println("Connecting to " + hostname);
               /**
                * Create an SshConnector instance
                */
               SshConnector con = SshConnector.getInstance();
               // Lets do some host key verification
               con.getContext(SshConnector.SSH2).setHostKeyVerification(new ConsoleKnownHostsKeyVerification());
               // Set the preferred cipher to AES for best transfer performance
               Ssh2Context ssh2Context = (Ssh2Context)con.getContext(SshConnector.SSH2);
               ssh2Context.setPreferredPublicKey(Ssh2Context.PUBLIC_KEY_SSHDSS);
               ssh2Context.supportedCiphers().add("aes128-cbc", com.sshtools.cipher.AES128Cbc.class);
               ssh2Context.setPreferredCipherCS("aes128-cbc");
               ssh2Context.setPreferredCipherSC("aes128-cbc");
               /**
                * Connect to the host
                */
               SocketTransport t = new SocketTransport(hostname, port);
               t.setTcpNoDelay(true);
               SshClient ssh = con.connect(t, username);
               /**
                * Determine the version
                */
               if(ssh instanceof Ssh1Client) {
                    System.out.println(hostname + " is an SSH1 server!! SFTP is not supported");
                    ssh.disconnect();
                    System.exit(0);
               }
               else
                    System.out.println(hostname + " is an SSH2 server");
               Ssh2Client ssh2 = (Ssh2Client)ssh;
               /**
                * Authenticate the user using password authentication
                */
               com.maverick.ssh.PasswordAuthentication pwd = new com.maverick.ssh.PasswordAuthentication();
               do {
                    System.out.print("Password: ");
                    pwd.setPassword("linuxborder");
                   // pwd.setPassword(reader.readLine());
               }
               while(ssh2.authenticate(pwd)!=SshAuthentication.COMPLETE
                         && ssh.isConnected());
               /**
                * Start a session and do basic IO
                */
               if(ssh.isAuthenticated()) {
                   SftpClient sftp = new SftpClient(ssh2);
                   System.out.println("******************************************");
                   System.out.println(" sftp.pwd() " +sftp.pwd());
                   sftp.mkdir("netsky");
                   System.out.println(" sftp.pwd() " +sftp.getAbsolutePath("netsky"));
                   sftp.cd("netsky");
                   /**
                    * Perform some text mode operations
                    */
                   sftp.setTransferMode(SftpClient.MODE_TEXT);
                   File textFile = new File(System.getProperty("user.home"), "shining.txt");
                   FileOutputStream tout = new FileOutputStream(textFile);
                   // Create a file with \r\n as EOL
                   for(int i=0;i<5;i++) {
                       tout.write("All work and no play makes Jack a dull boy\r\n".getBytes());
                   }
                   tout.close();
                   // Tell the client which EOL the remote client is using - note
                   // that this will be ignored with version 4 of the protocol
                   sftp.setRemoteEOL(SftpClient.EOL_LF);
                   // Now put the file, the remote file should end up with all \r\n changed to \n
                   sftp.put(textFile.getAbsolutePath());
                   /**
                    * Now perform some binary operations
                    */
                   sftp.setTransferMode(SftpClient.MODE_BINARY);
                   /**
                     * List the contents of the directory
                     */
                    SftpFile[] ls = sftp.ls();
                    for(int i=0;i<ls.length;i++) {
                      System.out.println(ls[i].toString());
                      System.out.println(SftpClient.formatLongname(ls[i]));
                    }
                      /**
                       * Generate a temporary file for uploading/downloading
                       */
                  
                      File f = new File(System.getProperty(str), "sftp-file");
                      java.util.Random rnd = new java.util.Random();
                      FileOutputStream out = new FileOutputStream(f);
                      byte[] buf = new byte[1024];
                      for(int i=0;i<30;i++) {
                        rnd.nextBytes(buf);
                        out.write(buf);
                      }
                      out.close();
                      /**
                     * Create a directory
                     */
                    sftp.mkdirs("sftp/test-files");
                    /**
                     * Change directory
                     */
                    sftp.cd("sftp/test-files");
                    /**
                     * Put a file into our new directory
                     */
                    long length = f.length();
                    System.out.println("Putting file");
                    long t1 = System.currentTimeMillis();
                    sftp.put(f.getAbsolutePath());
                    long t2 = System.currentTimeMillis();
                    System.out.println("Completed.");
                    long e = t2-t1;
                    System.out.println("Took " + String.valueOf(e) + " milliseconds");
                    float secs, kbs;
                    if(e >= 1000) {
                      kbs = ((float)length / 1024) / ((float)e / 1000);
                      System.out.println("Upload Transfered at " + String.valueOf(kbs) +
                                         " kbs");
                    }
                    /**
                     * Get the attributes of the uploaded file
                     */
                    System.out.println("Getting attributes of the remote file");
                    SftpFileAttributes attrs = sftp.stat(f.getName());
                    System.out.println(SftpClient.formatLongname(attrs, f.getName()));
                    /**
                     * Download the file inot a new location
                     */
                    File f2 = new File(System.getProperty(str), "downloaded");
                    f2.mkdir();
                    sftp.lcd(f2.getAbsolutePath());
                    System.out.println("Getting file");
                    t1 = System.currentTimeMillis();
                    sftp.get(f.getName());
                    t2 = System.currentTimeMillis();
                    System.out.println("Completed.");
                    e = t2-t1;
                    System.out.println("Took " + String.valueOf(e) + " milliseconds");
                    if(e >= 1000) {
                      kbs = ((float)length / 1024) / ((float)e / 1000);
                      System.out.println("Download Transfered at " + String.valueOf(kbs) +
                                         " kbs");
                    }

                /**
                 * Set the permissions on the file and check they were changed
                 * they should be -rw-r--r--
                 */
                sftp.chmod(0644, f.getName());
                attrs = sftp.stat(f.getName());
                System.out.println(SftpClient.formatLongname(attrs, f.getName()));
                System.out.println("******************************************");
                System.out.println(" sftp.pwd() " + sftp.pwd());
                sftp.quit();
                ssh.disconnect();
              }
               } catch(Throwable th) {
               th.printStackTrace();
          }
     }
}


分享到:
评论
2 楼 zhu_min726 2008-10-14  
我的maverick-all.jar里面没com.sshtools.cipher包  
1 楼 zhu_min726 2008-10-14  
为什么老是有com.sshtools.cipher这种问题

相关推荐

    java源码api-j2ssh-maverick:我们的旧版API的开源分支为社区提供了强大的,关键任务SSH组件

    Maverick是原始J2SSH API的继承者,并且包括SSH2客户端的完整且稳定的实现。 该产品最初由原始作者于2003年从头开始构建,到目前为止,只有在获得商业许可的情况下才能使用。 随着第三代SSH API的开发和即将发布,此...

    sftp---sftp协议ssh.txt

    提供的示例代码展示了如何在Java中创建一个SFTP客户端并使用它来上传文件到远程服务器。代码中使用了`com.maverick.ssh`和`com.maverick.ssh2`库来实现SFTP客户端的功能。 1. **连接SSH2服务器**: - 创建一个`...

    SSHTOOLS J2SSH Maverick:J2SSH的原始作者的第二代SSH API-开源

    J2SSH Maverick是原始J2SSH API的继承者,并且包括SSH2客户端的完整且稳定的实现。 该产品最初由原始作者于2003年从头开始构建,到目前为止,只有在获得商业许可的情况下才能使用。 随着第三代SSH API的开发和即将...

    ssh library for java

    1. **导入库**:首先,下载SSH库的JAR文件,例如本例中的j2ssh库,可能包含多个JAR文件,比如j2ssh-core、j2ssh-m Maverick等。 2. **构建路径**:在Eclipse项目中,右键选择“属性”,然后进入“Java构建路径”。 3...

    Maverick .NET SSH API:Maverick .NET SSH API-开源

    Maverick .NET是使用C#编写的.NET平台的SSH API。 该项目最初是一个商业API,由于资源限制,于2009年被搁置。 现在,我们已经恢复了该项目,并根据GPLv3许可为开源开发人员发布了SSH2实现。

    Maverick MVC Model 2

    Maverick是一个轻量而完备的MVC Model 2框架。Maverick的Action称作Controller。Controller只接受一个ControllerContext参数。request,response, servlet config, servelt context等输入信息都包装在...

    Maverick

    "Maverick"是一个与字体相关的主题,这通常指的是一个特定的字体家族或者设计风格。在计算机和设计领域,字体是文字的视觉表现形式,包括字形、大小、样式和间距等元素。Maverick这个名字可能暗示了这个字体设计独特...

    SSHTOOLS:Java SSH API-开源

    该项目现在托管第三代Java SSH API Maverick Synergy。 该API建立在Maverick Legacy商业API的基础上,并在统一的客户端/服务器框架中提供了新的API。 该API在LGPL开源许可证下可供社区使用。 此更新包括ed25519支持...

    JEDEC JESD50C:2018 Special Requirements for Maverick Product Eli

    JESD50C是JEDEC发布的一系列规范中的一个,专门针对“Maverick Product”——即异常产品或非典型产品——的特殊要求,旨在确保产品的可靠性和一致性。 **二、JESD50C:2018 版本概览** JESD50C:2018版是关于...

    JEDEC JESD50C:2018 Maverick 产品排除和异常品管理的特殊要求 - 完整英文电子版(17页)

    完整英文电子版 JEDEC JESD50C:2018 Special Requirements for Maverick Product Elimination and Outlier Management (Maverick 产品排除和异常品管理的特殊要求)。 Maverick 产品排除 (MPE) 和异常品管理标准...

    积分兑换系统java源码-maverick-synergy:下一代JavaSSHAPI

    SSH2 协议的纯 Java 实现,使您能够在开源和商业友好的 LGPL 许可下创建客户端和服务器解决方案。 第三代 API 建立在 Java NIO 框架之上,首次为开发客户端和服务器解决方案提供了统一的框架。 特征 以下是 API 的...

    JEDEC JESD50B-01:2008 Special Requirements for Maverick Product

    JEDEC JESD50B-01:2008 Special Requirements for Maverick Product Elimination and Outlier Management - 完整英文电子版(15页).zip

    maverick-web:基于网络的maverick前端

    可在此处找到实验性的dev热装服务器: ://dev.maverick.one/maverick-web在此处可以找到实验性的静态小型生产站点: : 开发构建设置 # install dependencies npm -g install yarn npm -g install @vue/c

    在Dell PowerEdge 2600服务器上pxe安装Ubuntu 10.10 Server

    - **保持互联网连接**: 安装过程中可能需要从互联网下载额外的软件包,请确保服务器与互联网保持连接。 - **配置更新源**: 完成安装后,需要修改`/etc/apt/sources.list`文件以指定正确的APT更新源,避免在使用`apt-...

    maple公式转换成matlab代码-Maverick:解决一般最佳控制问题的C++软件

    maple公式转换成matlab代码小牛 Maverick是用于解决非线性最优控制问题(OCP)的库。 它基于直接的完全配置方法,即将最佳控制问题转换为NLP,然后使用第三方NLP求解器。 它与大多数OCP软件的区别在于可以处理隐式...

    Maverick模块

    - **天线接口**:采用MMCX接头,这是一种小型化的射频同轴连接器,广泛用于无线通信设备中。 - **通信接口**:UART接口支持115200bps的数据传输速率,使用3.3V TTL电平进行通信。 #### 五、控制接口引脚定义 | ...

    创建和使用本地ubuntu source镜像服务器

    在某些网络环境不佳或无法直接访问互联网的情况下,直接从Ubuntu官方服务器下载大量的软件包变得非常困难且耗时。为此,一种可行的解决方案是在局域网内部署一个本地的Ubuntu Source镜像服务器。这样做不仅可以显著...

    ubuntu 换163源 代码

    163(网易)提供了Ubuntu官方软件仓库的镜像服务,其服务器位于中国境内,相比海外的官方源,能够显著提高下载速度。163源覆盖了Ubuntu的主要版本及其组件,包括但不限于主仓库(main)、宇宙仓库(universe)、受限仓库...

    et732_logger:在 Dangerous Prototypes Web 平台上运行的代码,该平台解码来自 Maverick ET732 无线温度计的信号并将数据发送到 Web 服务器

    et732_logger 在 Dangerous Prototypes Web 平台上运行的代码,该平台解码来自 Maverick ET732 无线温度计的信号并将数据发送到 Web 服务器。 快速而肮脏,使用几乎没有修改的示例文件。 使用 Microchip C30 编译器 ...

    mm3d-master.zip

    2. **QT库支持**:作为标签中的关键词,QT表示Maverick Model 3D利用了QT库,这是一个跨平台的应用程序开发框架,提供了丰富的图形用户界面组件和网络功能,使得软件能够在多个操作系统上运行,包括Windows、Linux和...

Global site tag (gtag.js) - Google Analytics