2015-09-22 3 views
0

В настоящее время я использую Reflection for Unix and OpenVMS. Я подключаюсь к серверу Unix. После подключения я устанавливаю новое FTP-соединение с целевым сервером. Вот как консольное окно выглядит следующим образом:Как подключиться к FTP-серверу из существующего подключения к серверу Unix?

login: xxx 
Password : xxx 
// Now I'm connected to UNIX 
// Next I am connecting to that FTP 
[email protected] :/whatever/.../ $ ftp someftp.example.com 
Conencted 
Name: myLogin 
Password: 
XXX 
Login OK 

Я пытался повторить те же действия, программно, но запутался с этим «двойной связи» вещь. Я смог подключиться только к Unix, но тогда я не знаю, как продолжить.

JSch jsch = new JSch(); 
Session session = jsch.getSession(user, host, port); 
    session.setPassword(password); 
    session.setConfig("StrictHostKeyChecking", "no"); 
System.out.println("Establishing Connection..."); 
session.connect(); 

Теперь, когда я подключен к Unix, как я продолжу с этим шагом [email protected] :/whatever/.../ $ ftp someftp.example.com?

Я думаю, что, возможно, нужно только послать команду, что-то вроде

sftpChannel.setCommand("[email protected] :/whatever/.../ $ ftp someftp.example.com ?") 

Как я могу подключиться к отдельному FTP из существующего «сеанса/подключения»?

ответ

1

Для этого обычно используется local port forwarding.

В JSch, после подключения, вызовите setPortForwardingL:

int ftpPort = session.setPortForwardingL(0, "someftp.example.com", 21); 

А затем подключить локальный клиент FTP (например FTPClient from Apache Commons) к localhost:ftpPort:

FTPClient ftp = new FTPClient(); 
ftp.connect("localhost", ftpPort); 
ftp.login("myLogin", password);