繁体   English   中英

j2ssh远程到远程文件传输

[英]j2ssh remote to remote file transfer

对于本地主机到远程服务器,以下代码可以正常工作。 但是我的应用程序在单独的服务器上运行,因此我需要从remote1服务器中选择文件,然后将其放入remote2服务器中。 如何使用J2SSH。

package com.test.sftp;

import java.io.File;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Properties;

import com.sshtools.daemon.SshServer;
import com.sshtools.j2ssh.SftpClient;
import com.sshtools.j2ssh.SshClient;
import com.sshtools.j2ssh.authentication.AuthenticationProtocolState;
import com.sshtools.j2ssh.authentication.PasswordAuthenticationClient;
import com.sshtools.j2ssh.configuration.SshConnectionProperties;
import com.sshtools.j2ssh.sftp.SftpFile;
import com.sshtools.j2ssh.transport.ConsoleKnownHostsKeyVerification;
import com.sshtools.j2ssh.transport.IgnoreHostKeyVerification;
import com.sshtools.j2ssh.transport.InvalidHostFileException;
import com.sshtools.j2ssh.transport.publickey.SshPublicKey;

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;

public class SftpTest {

    /**
     * @param args
     */
 public String userName;

 public String uri;
 public Date date;
 public String sdate;
 public DateFormat formatter ;
 public String serviceStart;

    public String hostname=null;
    public String username=null;
    public String password=null;

    public String hostname1=null;
    public String username1=null;
    public String password1=null;

    public String remotepath=null;
    public String localpath=null;
    public String remoteFilename=null;
    public void con()
    {
    SshClient ssh=null;
    SftpClient sftp=null;
    SftpFile sstp = null;
    try
    {



    hostname="173.202.29.29";
    username="xxxxx";
    password="xxxxxxx";



    SshClient client = new SshClient();


    SshConnectionProperties connectionProperties = new SshConnectionProperties();

   connectionProperties.setTransportProvider(SshConnectionProperties.USE_STANDARD_SOCKET); // or USE_STANDARD_SOCKET or USE_SOCKS4_PROXY or USE_SOCKS5_PROXY
  connectionProperties.setProxyHost("inetgate.highmark.com");

     connectionProperties.setProxyPort(22);
     connectionProperties.setHost(hostname);
     connectionProperties.setPort(22);

   client.connect(connectionProperties, new IgnoreHostKeyVerification());

    PasswordAuthenticationClient authenticationClient = new PasswordAuthenticationClient();
    authenticationClient.setUsername(username);
    authenticationClient.setPassword(password);
    int result = client.authenticate(authenticationClient);
    System.out.println("result value ::"+result);
    if (result == AuthenticationProtocolState.COMPLETE)
    System.out.println("success Authentication");
    else
    System.out.println("failed Authentication");
    System.out.println(client.isConnected());


    SftpClient sftpClient = client.openSftpClient();
    String localpath = "C:/Documents and Settings/lidkv15/Desktop/images";
    sftpClient.lcd(localpath);
    //sftpClient.cd("/");





    File folder = new File("C:/Documents and Settings/user/Desktop/images");
    File[] listOfFiles = folder.listFiles();


    for (int i = 0; i < listOfFiles.length; i++) {
      if (listOfFiles[i].isFile()) {
          String str ="C:/Documents and Settings/lidkv15/Desktop/images/"+listOfFiles[i].getName();

       //  sftpClient.put(str,"/usr/project/images/");
          System.out.println("File " + listOfFiles[i].getName());
      } else if (listOfFiles[i].isDirectory()) {
        System.out.println("Directory " + listOfFiles[i].getName());
      }
    }









    sftpClient.quit();
    client.disconnect();
    }
    catch(Exception e)
    {
    System.out.println("Exception while connecting to the remote server" + e);
    }
    }
    public static void main(String args[]) throws Exception
    {
    SftpTest obj = new SftpTest();
     obj.con();// calling the function




    }







}

不确定我是否理解您的问题...

如果您仅对两个服务器都具有SFTP访问权限,并且代码在本地运行(在客户端上),则唯一的选择是下载文件并将其上传到另一台服务器。 如果您具有对server1的SSH访问权限,则可以创建一个脚本,该脚本将向服务器2上传文件/从服务器2下载文件。

而且,如果您的代码在server1上运行,并且需要将文件从server1上载到server2,那么当您将代码从client1上载到server2时,它与当前情况有何不同(除了本地路径不同)?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM