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();
}
}
}
}
分享到:
相关推荐
Xftp是一个功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 以后,MS Windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。Xftp 能同时适应初级用户和高级用户的需要。它采用了标准的 Windows 风格的...
#Kitchen Sync ####使用sftp将本地目录同步到远程服务器(主要用于Pantheon Multidev环境) ##安装 git clone ...--help Print usage instructions. --host <string> The SSH hostname. --port <string> The SSH port...
在VS Code ,打开要同步到远程服务器的本地目录(或创建一个空目录,该目录首先要下载远程服务器文件夹的内容以便在本地进行编辑)。 在Windows / Linux上为Ctrl+Shift+P ,在Mac上为Cmd+Shift+P打开命令选项板,...
Forklift 可以实现本地远程目录同步,FXP 复制(不经过本机的服务器到服务器文件传输),远程编辑;若有网站远程文件管理需求,这些功能是方便多人合作的大杀器。 软件还提供各种便民功能,Synclet/Disklet/Droplet...
自动同步功能:可以帮助用户在不同主机之间自动传输文件,并比较本机和服务器上文件的不同。 拖放操作:支持将文件拖放到服务器或从服务器拖放到本地,简化文件传输过程。 增强安全性:支持多种身份验证方法和加密...
4、远程FTP服务器! 5、WebDAV! 6、Amazon S3! 7、SFTP! 8、Google Drive 云端网盘! 9、Windows Azure! 10、Amazon Cloud Drive云端! 11、SkyDrive网盘! 12、WinMobile!
主要介绍了linux通过跳板机连接远程服务器并进行文件传输的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
Xftp是一个功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 以后,MS Windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。Xftp 能同时适应初级用户和高级用户的需要。它采用了标准的 Windows 风格的...
或者本地修改,上传到服务器,各种不爽,现在改用xshell,但是有时候还是不方便感觉,于是自己配置了远程连接pycharm,这样不用总是到代码里修改,直接在windows下pycharm里修改再保存就可以实现同步更新到服务器里...
如果检测到更改,文件将自动与您的远程SFTP目录同步。 它仍然使用sftp-config.json中的SFTP服务器设置/凭据,并遵守在'ignore_regexes'中设置的忽略规则。 如果未找到sftp-config.json,则将提示用户输入主机/凭据...
使用 WinSCP 可以连接到一台提供 SFTP (SSH File Transfer Protocol)或 SCP (Secure Copy Protocol)服务的 SSH (Secure Shell)服务器,通常是 UNIX 服务器。SFTP 包含于 SSH-2 包中,SCP 在 SSH-1 包中。两种协议都...
此工具可进行文本模式,文件夹模式以及二进制模式的比较,并且可以对比较的文件进行合并,同步等操作,支持撤消操作...远程比较文件,使用 FTP/SFTP 下载远程文件,执行比较/合并操作,然后仍旧将文件保存在服务器上。
站点管理:用户可以保存和管理多个远程站点的连接信息,方便快速访问不同的远程服务器。 多语言支持:WinSCP提供多种语言的界面,适应不同用户的需求。 指令行界面:除了图形界面外,WinSCP还提供指令行界面,使用户...
VSFTP的sftp同步扩展 将本地目录与远程服务器目录同步。 允许您在本地保存文件后,有选择地编辑将文件上传到远程目录。 这使您可以类似于WinScp或其他类似程序,在服务器上直接或多或少地进行编辑。 非常强大,...
FTPGetter 自动执行 FTP 和 SFTP 上载和下载,安排远程服务器位置与本地或网络工作站之间的 FTP/SFTP 传输。计划您的工作流程并只设置一次计划,FTPGetter 将取消例程!选择方便的时间,选择星期几,或选择每月日期...
5.终端,sftp同屏显示,同步切换目录. 6.命令自动提示,智能匹配,输入更快捷,方便. 7.sftp支持,通过各种优化技术,加载更快,切换,打开目录无需等待. 8.服务器网络,性能实时监控,无需安装服务器插件. 9.内置海外服务器...
是一个免费、开源的Windows应用程序,主要用于通过SFTP (SSH File Transfer Protocol)、SCP (Secure Copy Protocol)、FTP (File Transfer Protocol) 和WebDAV协议在本地计算机和远程计算机之间安全地传输文件。...
监视文件夹中的文件更改,并通过SFTP自动将其同步到远程服务器。安装$ npm install -g live-sync 用法$ live_sync <path> <host> <username> <password> <path> 托多斯添加更多的传输层,例如FTP。
FTPGetter 自动执行 FTP 和 SFTP 上载和下载,安排远程服务器位置与本地或网络工作站之间的 FTP/SFTP 传输。计划您的工作流程并只设置一次计划,FTPGetter 将取消例程!选择方便的时间,选择星期几,或选择每月日期...
5.终端,sftp同屏显示,同步切换目录. 6.命令自动提示,智能匹配,输入更快捷,方便. 7.sftp支持,通过各种优化技术,加载更快,切换,打开目录无需等待. 8.服务器网络,性能实时监控,无需安装服务器插件. 9.内置海外服务器...