2015-09-23 3 views
0

Мне нужно отправить следующие команды ftpКак отправить команды ftp с использованием JSch API?

% ftp test.cs.xxxx.edu 
Connected to test.cs.xxxx.edu. 
220 test FTP server (Version 5.53 ........) ready. 
Name (test.cs.xxxx.edu:yourlogin): yourlogin 
331 Password required for yourlogin. 
Password: 
230 User yourlogin logged in. 
ftp> cd HPSC/exercises 
ftp> get JHFLKDHLFKD.zip 

Я пытался посылать эти команды следующим образом

JSch jsch = new JSch();  

Session session_1 = jsch.getSession("user1", "host1", 22); 
session_1.setConfig("StrictHostKeyChecking", "no"); 
session_1.setPassword("pass1"); 
session_1.connect(); 
System.out.println("The session 1 has been established"); 

ChannelExec exec = (ChannelExec)session_1.openChannel("exec"); 

exec.connect(); 
exec.setCommand("ftp test.cs.xxxx.edu"); 
exec.setCommand("user2"); 
exec.setCommand("pass2"); 
exec.setCommand("cd \test\test\test"); 
exec.setCommand("get JHFLKDHLFKD.zip"); 

Но это не сработало. Я также попробовал «оболочку».

Что я делаю неправильно?

+0

Подсказка: как вы думаете, что интерпретирует команды FTP при запуске вашего FTP-клиента? Оболочка или FTP-клиент? – fge

ответ

0

Команды, которые вы отправляете, являются командами процесса ftp. Это не команды, которые удаленная оболочка может понять.

Единственная настоящая команда - ftp. Остальное должно быть подано в начальный процесс на его стандартный вход. Для ввода ввода используйте setInputStream method.


Во всяком случае, вы должны лучше использовать родной FTP-клиент, а что с клиента командной строки на стороне сервера, как я предложил вам ранее:
How to connect to an FTP server from an existing connection to Unix server?

+0

Спасибо. Я пробовал FTP-клиент, но всегда получаю «соединение отказано», – Pasha

0

Вы пытаетесь использовать клиентскую библиотеку SFTP для связи с FTP-сервером.

Несмотря на подобные названия и назначение, FTP и SFTP являются совершенно разными протоколами. См. Differences between SFTP and "FTP over SSH"

Необходимо изменить либо сервер, либо клиента, чтобы они соответствовали друг другу.