sftp 工具类
2015-11-18 15:47
691 查看
/** * 创建于:2015年11月16日 上午10:34:19 * 所属项目: * 文件名称:SftpUtil.java * 作者:test * 版权信息: */ package sftp; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Properties; import org.apache.log4j.Logger; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import com.jcraft.jsch.SftpException; public class SftpUtil { private static Logger logger = Logger.getLogger(SftpUtil.class); public static void main(String[] args) throws SftpException { SftpUtil sftpUtil = new SftpUtil(); ChannelSftp sftp = sftpUtil.connect("192.168.8.18", 22, "test", "test"); //sftpUtil.download("tomcat/logs", "localhost_access_log.2015-11-13.txt", "E:/manager.2015-11-18.log", sftp); //sftpUtil.upload("", "E:/pom.xml", sftp); sftpUtil.delete("tomcat/logs", "pom.xml", sftp); sftpUtil.disconnect(sftp); logger.info("完成了"); } /** * 连接sftp服务器 * @param host 主机 * @param port 端口 * @param username 用户名 * @param password 密码 * @return */ public ChannelSftp connect(String host, int port, String username, String password) { ChannelSftp sftp = null; try { JSch jsch = new JSch(); Session sshSession = jsch.getSession(username, host, port); sshSession.setPassword(password); Properties sshConfig = new Properties(); // 如果设置成“yes”,ssh就不会自动把计算机的密钥加入“$HOME/.ssh/known_hosts”文件 // 并且一旦计算机的密钥发生了变化,就拒绝连接 sshConfig.put("StrictHostKeyChecking", "no"); sshSession.setConfig(sshConfig); sshSession.connect(); Channel channel = sshSession.openChannel("sftp"); channel.connect(); logger.info("host:" + host + ",port:" + port + "连接成功"); sftp = (ChannelSftp) channel; } catch (Exception e) { e.printStackTrace(); } return sftp; } /** * 释放连接,关闭会话 * @param sftp ChannelSftp */ public void disconnect(ChannelSftp sftp){ if(sftp != null){ sftp.disconnect(); try { sftp.getSession().disconnect(); } catch (JSchException e) { e.printStackTrace(); } } } /** * 上传文件 * @param directory 上传的目录 * @param uploadFile 要上传的文件 * @param sftp ChannelSftp */ public void upload(String directory, String uploadFile, ChannelSftp sftp) { try { if(directory != null && !"".equals(directory)){ sftp.cd(directory); } File file = new File(uploadFile); FileInputStream fis = new FileInputStream(file); sftp.put(fis, file.getName()); fis.close(); logger.info(uploadFile + "上传成功"); } catch (Exception e) { e.printStackTrace(); } } /** * 下载文件 * @param directory 下载目录 * @param downloadFile 下载的文件 * @param saveFile 存在本地的路径 * @param sftp */ public void download(String directory, String downloadFile, String saveFile, ChannelSftp sftp) { try { if(directory != null && !"".equals(directory)){ sftp.cd(directory); } File file = new File(saveFile); FileOutputStream fos = new FileOutputStream(file); sftp.get(downloadFile, fos); fos.close(); logger.info(downloadFile + "下载完成"); } catch (Exception e) { e.printStackTrace(); } } /** * 删除文件 * @param directory 要删除文件所在目录 * @param deleteFile 要删除的文件 * @param sftp */ public void delete(String directory, String deleteFile, ChannelSftp sftp) { try { if(directory != null && !"".equals(directory)){ sftp.cd(directory); } sftp.rm(deleteFile); logger.info(deleteFile + "删除成功"); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- PHP 特殊方法 __set()、__get()
- PHP的加密解密字符串函数
- php构建RSS
- VirtualBox下Ubuntu上网设置,能够使用cuteftp传输资料
- PHP 5.3-5.5 新特性
- PHP - 唯一标示符
- PHPExcel出现错误101 net::ERR_CONNECTION_RESET
- PHP获取目录下的文件(包括子目录中的文件)
- PHP json_decode中文转义的问题
- yii2 打印sql语句
- 常用 php server
- PHP有关函数的编程思想(递归与迭代)
- PHP - 判断php是否对表单数据内的特殊字符自动转义
- directoryContentsAtPath is deprecated.
- php pdo sqlserver分页sql的处理
- PHPstorm注释修改
- 【ThinkPHP】U()函数和I()函数
- php学习之连接数据库微型博客
- PHP7新特性 What will be in PHP 7/PHPNG
- yii 自定义日志文件