public class SftpTool {
private static LogTool logger = LogTool.getLogger(SftpTool.class.getName());
//出现连接异常时,重复连接三次
public static ChannelSftp getSftpChannel(String host, int port,
String username, String password,int i)throws Exception {
ChannelSftp sftp = null;
JSch jsch = new JSch();
try {
jsch.getSession(username, host, port);
Session sshSession = jsch.getSession(username, host, port);
System.out.println("Session created.");
sshSession.setPassword(password);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
sshSession.connect();
Channel channel = sshSession.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
return sftp;
} catch (JSchException e) {
if(i>=1){
SftpTool.getSftpChannel(host, port, username, password,i-1);
}
e.printStackTrace();
logger.error(e.getMessage());
throw new Exception("Contact remote service failed");
}
}
//ConfigFileTool 用来读取配置文件信息
public void uploadFile() throws Exception {
Document doc = null;
try {
doc = ConfigFileTool.getLocalDocument("sftp_config.xml");
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
throw new Exception(e.getMessage());
}
List<Element> eleList = doc.selectNodes("//config/service");
if (null == eleList || 1 < eleList.size()) {
throw new Exception("The node that you select is not exists!");
}
Element ele = eleList.get(0);
String host = ele.element("host").getTextTrim();
int port = Integer.valueOf(ele.element("port").getTextTrim());
String username = ele.element("username").getTextTrim();
String password = ele.element("password").getTextTrim();
String directory = ele.element("remotedir").getTextTrim();
String uploadFile = ele.element("localdir").getTextTrim();
//3,为了采用递归的方式,实现出现异常时,重复连接三次
ChannelSftp sftp = SftpTool.getSftpChannel(host, port, username,
password,3);
try {
sftp.cd(directory);
File file = new File(uploadFile);
sftp.put(new FileInputStream(file), file.getName());
} catch (FileNotFoundException e) {
e.printStackTrace();
logger.error(e.getMessage());
throw new Exception("The file " + uploadFile + " not exists");
} catch (SftpException e) {
logger.error(e.getMessage());
e.printStackTrace();
throw new Exception("Upload file to remote service failed");
}finally {
//关闭连接
if (sftp != null && sftp.isConnected()) {
sftp.getSession().disconnect();
sftp.quit();
sftp.disconnect();
}
}
}
}
分享到:
相关推荐
在"java swing做的sftp同步软件"这个项目中,开发人员利用Swing构建了一个用户界面,使得用户可以方便地进行文件的SFTP(Secure File Transfer Protocol)同步操作。 SFTP是一种安全的网络协议,它允许用户通过加密...
本方案旨在通过编写Windows批处理脚本,实现对特定文件夹内的文件进行自动归档、压缩,并通过SFTP方式将压缩后的文件上传到远程的Linux备份服务器上。这种方式不仅能够提高数据传输的安全性,还能够减少人工干预,...
在众多的插件中,SFTP(Sublime Text 3 File Transfer Protocol)是一个极其实用的工具,专为开发者设计,旨在简化代码版本与远程服务器之间的同步过程。 SFTP插件通过SSH(Secure Shell)协议与服务器进行通信,...
这样的系统能够安全地上传、下载、删除以及管理远程服务器上的文件,通常用于开发人员在不同环境间同步代码或者企业内部的数据交换。 【描述】在描述中,我们理解到这个项目是利用现代Web技术栈构建的,前端部分...
"SFTP上传下载文件工具"通常指的是支持SFTP协议的软件应用,这些应用使得用户能够方便地在本地计算机和远程服务器之间进行文件的上传和下载。描述中提到的"可直接文件夹传输"功能,意味着这款工具不仅支持单个文件的...
### 在Windows上使用BAT脚本自动拉取服务器文件的知识点详解 #### 一、概述 在Windows环境下,可以通过编写BAT脚本来实现自动化任务,比如定时从远程服务器拉取文件等。这种方式不仅能够提高工作效率,还能确保数据...
3. **SFTP服务**:远程服务器上已经安装并配置好SFTP服务(如OpenSSH)。 4. **项目准备**:待部署的应用程序或项目源代码已准备好。 #### 二、配置SFTP连接 1. **打开配置界面**:启动IDEA后,在顶部菜单栏中选择...
例如,开发者可以设置自动同步本地开发目录与远程服务器的代码,每当有新的代码提交,就自动部署到测试或生产环境中。 此外,WinSCP与其他开发工具如Git、Subversion等的集成也是其亮点之一。通过插件或脚本,用户...
`sftp-sync` 是一个利用SFTP协议实现远程目录同步的工具,尤其适用于开发者和系统管理员,他们需要定期或实时更新本地和远程服务器之间的文件。 `sftp-sync` 的主要功能在于自动化和便捷化远程文件同步的过程。它...
“logcollector”是一个用Python编写的脚本,其主要功能是通过SFTP(SSH文件传输协议)从远程服务器批量下载日志文件。该工具旨在简化日志管理流程,提高运维效率,支持定时任务,可定制化配置,适用于多种场景。 ...
【sftp_manger批量服务器管理器】是一款专为IT专业人士设计的高效工具,它整合了SFTP(Secure File Transfer Protocol)功能,使得用户能够轻松地对多台远程服务器进行批量管理和维护。SFTP是一种安全的文件传输协议...
文件传输:支持 SFTP、FTP、WebDAV 和 SCP 协议,可以在本地计算机和远程服务器之间进行文件传输。 图形用户界面(GUI):提供用户友好的图形界面,支持拖放操作,使文件传输和管理更加方便。 文件同步:可以同步...
它可能是一个轻量级的应用程序,设计简洁,易于使用,旨在提供快速访问和管理远程服务器文件的能力,而无需频繁地打开和关闭SFTP客户端。 标签中的“软件/插件”表明这是一个可安装的应用程序或扩展,用户可以在...
Xftp是一个功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 以后,MS Windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。Xftp 能同时适应初级用户和高级用户的需要。它采用了标准的 Windows 风格的...
`XFTP`是一款流行的文件传输协议客户端,常用于在本地计算机与远程服务器之间安全地交换文件。它支持多种协议,包括`SFTP`(Secure File Transfer Protocol),这是一种基于`SSH`的安全文件传输方式。本文将深入探讨...
首先,配置远程服务器的SFTP连接是使用远程环境的第一步。在Pycharm的Tools菜单下找到Deployment,并点击Configurations,新建一个SFTP配置。在这里需要输入远程Linux服务器的相关信息,包括IP地址、用户名和密码。...
它允许用户在本地计算机和远程服务器之间交换文件,无论是上传还是下载。FTP的使用涉及到多个关键概念和流程,以下将详细讲解FTP上传与下载以及相关知识点。 **FTP上传**: FTP上传是指将本地计算机上的文件或...
远程文件传送指的是将本地计算机上的文件传输到另一台远程服务器,或者从远程服务器下载文件到本地。这种功能在分布式系统、云计算和网络服务中非常常见。C#提供了多种方法来实现这一目标,包括但不限于FTP(文件...
这将使用配置的SFTP信息与远程服务器建立连接,并执行文件同步操作。 4. **配置高级选项**:SFTP插件还支持更多高级设置,如自动同步、忽略文件模式、端口设置、SSH代理等。可以在`.sublime-project`文件的`SFTP-...
通过这些Java技术,你可以构建一个本地文件系统与远程服务器之间的实时同步系统,从而满足文件自动上传的需求。这只是一个基础实现,根据具体业务场景,你可能需要对代码进行适当的调整和扩展。