2015-09-23 32 views
0

我需要發送以下ftp命令如何使用JSch API發送UNIX ftp命令?

% 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命令? shell還是FTP客戶端? – fge

回答

0

您要發送的命令是ftp進程的命令。這些不是遠程shell可以理解的命令。

唯一真正的命令是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"

您需要更改服務器或客戶端,以便它們匹配。