系列文章目录
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、Jsch?
JSch是Java Secure Channel的缩写。 JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序。
二、使用步骤
1.pom.xml添加依赖
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
2.SFTP工具类
原创链接
https://blog.csdn.net/weixin_36795183/article/details/78626215
特此感谢原创作者的分享
:
import com.jcraft.jsch.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
* @Description: SFTP连接对象
* @Author: xxx
* @Date: 2022/4/20 11:36
* @Version: 1.0.0
*/
public class SFTPChannel {
private Session session = null;
private Channel channel = null;
/**
* 创建SFTP连接
* @param sftpDetails
* @param timeout
* @return
* @throws JSchException
*/
public ChannelSftp getChannel(Map<String, String> sftpDetails, int timeout) throws JSchException {
String ftpHost = sftpDetails.get(SFTPConstants.SFTP_REQ_HOST);
String port = sftpDetails.get(SFTPConstants.SFTP_REQ_PORT);
String ftpUserName = sftpDetails.get(SFTPConstants.SFTP_REQ_USERNAME);
String ftpPassword = sftpDetails.get(SFTPConstants.SFTP_REQ_PASSWORD);
int ftpPort = SFTPConstants.SFTP_DEFAULT_PORT;
if (port != null && !port.equals("")) {
ftpPort = Integer.valueOf(port);
}
JSch jsch = new JSch(); // 创建JSch对象
session = jsch.getSession(ftpUserName, ftpHost, ftpPort); // 根据用户名,主机ip,端口获取一个Session对象
System.out.println("Session created.");
if (ftpPassword != null) {
session.setPassword(ftpPassword); // 设置密码
}
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config); // 为Session对象设置properties
session.setTimeout(timeout); // 设置timeout时间
session.connect(); // 通过Session建立链接
System.out.println("Session connected.");
System.out.println("Opening Channel.");
channel = session.openChannel("sftp"); // 打开SFTP通道
channel.connect(); // 建立SFTP通道的连接
System.out.println("Connected successfully to ftpHost = " + ftpHost + ",as ftpUserName = " + ftpUserName
+ ", returning: " + channel);
return (ChannelSftp) channel;
}
/**
* 关闭SFTP连接
* @throws Exception
*/
public void closeChannel() throws Exception {
if (channel != null) {
channel.disconnect();
}
if (session != null) {
session.disconnect();
}
}
public static void main(String[] args) throws Exception {
SFTPChannel sftpChannel = new SFTPChannel();
Map<String, String> sftpDetails = new HashMap<String, String>();
// 设置主机ip,端口,用户名,密码
sftpDetails.put(SFTPConstants.SFTP_REQ_HOST, "192.168.32.224");
sftpDetails.put(SFTPConstants.SFTP_REQ_USERNAME, "sftpuser");
sftpDetails.put(SFTPConstants.SFTP_REQ_PASSWORD, "password");
sftpDetails.put(SFTPConstants.SFTP_REQ_PORT, "22");
String src = "D:\\DevSoft\\HB-SnagIt1001.rar"; // 本地文件名
String dst = "/home/omc/ylong/sftp/HB-SnagIt1001.rar"; // 目标文件名
ChannelSftp channel = sftpChannel.getChannel(sftpDetails, 60000);
// 上传文件
channel.put(src, dst, ChannelSftp.OVERWRITE);
// 下载文件
channel.get(src, dst);
// 关闭
channel.quit();
sftpChannel.closeChannel();
}
}
/**
* @Description: SFTP连接参数常量
* @Author: xxxx
* @Date: 2022/4/20 11:38
* @Version: 1.0.0
*/
public class SFTPConstants {
public static final String SFTP_REQ_HOST = "host";
public static final String SFTP_REQ_PORT = "port";
public static final String SFTP_REQ_USERNAME = "username";
public static final String SFTP_REQ_PASSWORD = "password";
public static final int SFTP_DEFAULT_PORT = 22;
public static final String SFTP_REQ_LOC = "location";
}
3.测试代码
import com.demo.druid.encryptor.constant.SFTPChannel;
import com.demo.druid.encryptor.constant.SFTPConstants;
import com.jcraft.jsch.ChannelSftp;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
/**
* @Description: SFTP连接参数常量
* @Author: cy.k
* @Date: 2022/4/20 11:38
* @Version: 1.0.0
*/
public class Application {
public static void main(String[] args) throws Exception{
SFTPChannel sftpChannel = new SFTPChannel();
Map<String, String> sftpDetails = new HashMap<String, String>();
// 设置主机ip,端口,用户名,密码
sftpDetails.put(SFTPConstants.SFTP_REQ_HOST, "172.16.101.238");
sftpDetails.put(SFTPConstants.SFTP_REQ_USERNAME, "root");
sftpDetails.put(SFTPConstants.SFTP_REQ_PASSWORD, "xxxxxx");
sftpDetails.put(SFTPConstants.SFTP_REQ_PORT, "22");
// 创建临时文件
Path path = Files.createTempFile(Paths.get("tmp_").toString(), ".txt");
// 向临时文件写
OutputStream out = new FileOutputStream(path.toAbsolutePath().toString());
out.write("临时文件内容".getBytes());
out.close();
String src = path.toAbsolutePath().toString();
String dst = "/tmp/upload"; // 目标文件名
ChannelSftp channel = sftpChannel.getChannel(sftpDetails, 60000);
// 上传文件
channel.put(src, dst, ChannelSftp.OVERWRITE);
// 下载文件
//channel.get(src, dst);
System.out.println("--------------------> src :"+src+"\n-------------------->dst :"+dst+"/"+path.getFileName().toString());
// 关闭
channel.quit();
sftpChannel.closeChannel();
}
}