我正在开发一个 Java 工具,它可以将文件从一个远程服务器上传到另一个服务器。
该程序将在笔记本电脑上运行。该软件需要通过 SSH 协议连接到 serverA,然后一旦连接到 serverA,它必须通过 FTP 将文件传输到 serverB。要传输的文件托管在服务器 A 上。
由于防火墙,我无法直接连接到 serverB。
这是一个摘要:
JSch可以做到这一点吗?类似于以下内容:
JSch client = new JSch();
Session session = client.getSession("login", "serverA", 22);
// test purpose
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword("password");
session.connect();
channel = (ChannelExec) session.openChannel("exec");
channel.setCommand("ftp -i ftp://username:password@serverB; put file.txt; close; quit;");
编辑
编写脚本并将其上传到 serverA 上怎么样?
#!/bin/sh
ftp -n -i <<ENDOFINPUT
open serverB
user root password
cd /home/root
put xxx
close
bye
ENDOFINPUT