SFTP操作
This commit is contained in:
parent
ad5b0c3f45
commit
cd849db3c3
5
pom.xml
5
pom.xml
@ -21,6 +21,11 @@
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.jcraft</groupId>
|
||||
<artifactId>jsch</artifactId>
|
||||
<version>0.1.53</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.bouncycastle</groupId>
|
||||
<artifactId>bcprov-jdk16</artifactId>
|
||||
|
131
src/main/java/osc/git/eh3/sftp/SFTPUtil.java
Normal file
131
src/main/java/osc/git/eh3/sftp/SFTPUtil.java
Normal file
@ -0,0 +1,131 @@
|
||||
package osc.git.eh3.sftp;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Properties;
|
||||
|
||||
import com.jcraft.jsch.Channel;
|
||||
import com.jcraft.jsch.ChannelSftp;
|
||||
import com.jcraft.jsch.JSch;
|
||||
import com.jcraft.jsch.Session;
|
||||
|
||||
/**
|
||||
* SFTP工具类
|
||||
* @author lixiangrong
|
||||
*
|
||||
*/
|
||||
public class SFTPUtil {
|
||||
private static String ip;
|
||||
private static String user;
|
||||
private static String psw;
|
||||
private static int port;
|
||||
|
||||
private static Session session = null;
|
||||
private static Channel channel = null;
|
||||
|
||||
static {
|
||||
try {
|
||||
InputStream propFile = SFTPUtil.class.getResourceAsStream("sftp.properties");
|
||||
if (propFile != null) {
|
||||
Properties p = new Properties();
|
||||
p.load(propFile);
|
||||
ip = p.getProperty("sftp.ip");
|
||||
user = p.getProperty("sftp.user");
|
||||
psw = p.getProperty("sftp.psw");
|
||||
String portStr = p.getProperty("sftp.port");
|
||||
port = (portStr != null ? Integer.parseInt(portStr) : -1);
|
||||
propFile.close();
|
||||
propFile = null;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static ChannelSftp getSFTP() throws Exception {
|
||||
ChannelSftp sftp = null;
|
||||
JSch jsch = new JSch();
|
||||
if (port <= 0) {
|
||||
// 连接服务器,采用默认端口
|
||||
session = jsch.getSession(user, ip);
|
||||
} else {
|
||||
// 采用指定的端口连接服务器
|
||||
session = jsch.getSession(user, ip, port);
|
||||
}
|
||||
|
||||
// 如果服务器连接不上,则抛出异常
|
||||
if (session == null) {
|
||||
throw new Exception("session is null");
|
||||
}
|
||||
|
||||
// 设置登陆主机的密码
|
||||
session.setPassword(psw);// 设置密码
|
||||
// 设置第一次登陆的时候提示,可选值:(ask | yes | no)
|
||||
session.setConfig("StrictHostKeyChecking", "no");
|
||||
// 设置登陆超时时间
|
||||
session.connect(30000);
|
||||
|
||||
try {
|
||||
// 创建sftp通信通道
|
||||
channel = (Channel) session.openChannel("sftp");
|
||||
channel.connect(1000);
|
||||
sftp = (ChannelSftp) channel;
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return sftp;
|
||||
}
|
||||
|
||||
private static void closeSFTP() {
|
||||
if (session != null && session.isConnected()) {
|
||||
session.disconnect();
|
||||
}
|
||||
if (channel != null && channel.isConnected()) {
|
||||
channel.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* SFTP上传文件
|
||||
* @param desPath ftp服务器目录
|
||||
* @param desFileName 上传后的文件名
|
||||
* @param resFile 要上传的文件
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void putFile(String desPath, String desFileName, File resFile) throws Exception {
|
||||
try {
|
||||
ChannelSftp sftp = getSFTP();
|
||||
|
||||
// 进入服务器指定的文件夹
|
||||
sftp.cd(desPath);
|
||||
|
||||
OutputStream outstream = sftp.put(desFileName);
|
||||
InputStream instream = new FileInputStream(resFile);
|
||||
|
||||
byte b[] = new byte[1024];
|
||||
int n;
|
||||
while ((n = instream.read(b)) != -1) {
|
||||
outstream.write(b, 0, n);
|
||||
}
|
||||
outstream.flush();
|
||||
outstream.close();
|
||||
instream.close();
|
||||
|
||||
closeSFTP();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
SFTPUtil.putFile("/data", "212321.txt", new File("D:/1.txt"));
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
4
src/main/java/osc/git/eh3/sftp/sftp.properties
Normal file
4
src/main/java/osc/git/eh3/sftp/sftp.properties
Normal file
@ -0,0 +1,4 @@
|
||||
sftp.ip=192.168.3.166
|
||||
sftp.user=root
|
||||
sftp.psw=PowerXene123
|
||||
sftp.port=22
|
@ -9,7 +9,7 @@ public class OperateKPIBudgetRedisData {
|
||||
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
showSom("022ea1a5-3f21-40dd-9c24-c0edfa82bfda");
|
||||
showSom("09e5f11c-5c6d-44e4-a599-1d2981d283c3");
|
||||
// delete("c46b8885-4c1d-48f9-befb-3ba3a0f33d4a");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user