0

以下代码适用于本地主机到远程服务器。但是我的应用程序在单独的服务器上运行,所以我需要从 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




    }







}
4

1 回答 1

0

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

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

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

于 2011-01-31T21:55:18.970 回答