import java.io.*;
import java.util.*;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.ChannelSftp.LsEntry;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpATTRS;
import com.jcraft.jsch.SftpException;
import com.jcraft.jsch.UserInfo;
import com.peony.provisioncheck.constant.Constant;
@Component
public class SFTPUtil {
private transient Logger log = LoggerFactory.getLogger(this.getClass());
private ChannelSftp sftp;
private Session session;
/**
* FTP 登录用户名
*/
private String username;
/**
* FTP 登录密码
*/
private String password;
/**
* 私钥
*/
private String privateKey;
private String keyPwd;
/**
* FTP 服务器地址IP地址
*/
private String host;
private int port;
/**
* 构造基于密码认证的sftp对象
*
* @param username
* @param password
* @param host
* @param port
*/
public SFTPUtil(String username, String password, String host, int port, String privateKey) {
this.username = username;
this.password = password;
this.host = host;
this.port = port;
this.privateKey = privateKey;
this.keyPwd = password;
}
/**
* 构造基于秘钥认证的sftp对象
*/
// public SFTPUtil(String username, String host, int port, String privateKey) {
// this.username = username;
// this.host = host;
// this.port = port;
// this.privateKey = privateKey;
// }
public SFTPUtil() {
}
/**
* 连接sftp服务器
*
* @throws Exception
*/
public void login() {
try {
if (null == sftp) {
System.out.println("======>" + host + port + username + privateKey + keyPwd);
sftp = SFTPUtil.privateKeyConnect(host, port, username, privateKey, keyPwd);
}
if (null == sftp) {
JSch jsch = new JSch();
if (privateKey != null) {
try {
jsch.addIdentity(privateKey);// 设置私钥
} catch (JSchException e) {
e.printStackTrace();
}
log.info("sftp connect,path of private key file:{}", privateKey)