我需要发送以下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");
但那没用。我也试过" shell"。
我做错了什么?
答案 0 :(得分:0)
您要发送的命令是ftp
进程的命令。这些不是远程shell可以理解的命令。
唯一真正的命令是ftp
。其余部分必须输入到已启动的过程到其标准输入。使用setInputStream
method提供输入。
无论如何,您应该更好地使用本机FTP客户端,而不是在服务器端启动命令行客户端,正如我之前建议的那样:
How to connect to an FTP server from an existing connection to Unix server?
答案 1 :(得分:0)
您正在尝试使用SFTP客户端库与FTP服务器进行通信。
尽管名称和用途相似,但FTP和SFTP是完全不同的协议。看到 Differences between SFTP and "FTP over SSH"
您需要更改服务器或客户端,以便它们匹配。