如何解决如何使用一个talend作业基于ftphost名称连接到多个ftp站点
我正在尝试连接到多个ftp站点,但只有ftp主机名(IP地址)在不同的ftp站点之间有所不同,并且用户名,密码,端口,目录都相同,我可以在其中下载和阅读/检索最新文件。
我有一个现有流程,它连接到一个特定的ftp站点并进行操作,现在我想使用context变量添加多个ftp站点,并作为同一流的一部分调用不同ftp站点的多个流,仅考虑到主机名会有所不同,其他所有内容都完全相同。
我应该使用trunjob组件还是最简单的方法?
解决方法
您是否考虑过使用SFTP? 这是使用JSch库的代码段,您可以修改它以用于多个连接:
private static final String SFTP_SERVER_URL = "server.com";
private static final String SFTP_SERVER_USERNAME = "user";
private static final String SFTP_SERVER_PASSWORD = "pass";
private static final int SFTP_SERVER_PORT = port;
private final static String LOCAL_DOWNLOAD_PATH = "downloads/";
private static ChannelSftp setupSFTP() {
ChannelSftp channel = null;
try {
JSch jsch = new JSch();
JSch.setConfig("StrictHostKeyChecking","no");
Session jschSession = jsch.getSession(SFTP_SERVER_USERNAME,SFTP_SERVER_URL);
jschSession.setPassword(SFTP_SERVER_PASSWORD);
jschSession.setPort(SFTP_SERVER_PORT);
jschSession.connect();
channel = (ChannelSftp) jschSession.openChannel("sftp");
} catch (JSchException e) {
e.printStackTrace();
}
return channel;
}
public static void downloadFile(String path,String fileName) {
try {
ChannelSftp channelSftp = setupSFTP();
channelSftp.connect();
// Download file and close connection
channelSftp.get(path,LOCAL_DOWNLOAD_PATH + fileName);
channelSftp.exit();
} catch (SftpException e) {
e.printStackTrace();
} catch (JSchException e) {
e.printStackTrace();
}
}
public static void uploadFile(String localPath,String remotePath) {
try {
ChannelSftp channelSftp = setupSFTP();
channelSftp.connect();
// Upload file and close connection
channelSftp.put(localPath,remotePath);
channelSftp.exit();
} catch (SftpException e) {
e.printStackTrace();
} catch (JSchException e) {
e.printStackTrace();
}
}
您可以具有多种设置功能,每个服务器都有一个。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。