maven引入
<!-- 读取远程服务器文件-->
<!-- shh2 -->
<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>262</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.53</version>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.4</version>
</dependency>
工具类代码
@Slf4j
public class SHH2Util {
//服务器ip地址
private final static String host="";
//账户
private final static String userName="";
//密码
private final static String passWord="";
//指定默认编码
private static String DEFAULT_CHARSET = "UTF-8";
/**
* 建立SSH2连接
* @param host 主机地址
* @param username 用户名
* @param password 密码
* @return Connection
*/
public static Connection openConnection(String host, String username, String password) {
try {
Connection connection = new Connection(host);
//建立ssh2连接
connection.connect();
//检验用户名
boolean login = connection.authenticateWithPassword(username,password);
if (login){
return connection;
}else {
throw new RuntimeException(host + " 用户名密码不正确");
}
} catch (Exception e) {
throw new RuntimeException(host +" "+ e);
}
}
/**
* 读取服务器文件
* @param fileName 路径+文件名+文件后缀
* @return
*/
public static String readSipFile(String filePath,String fileName){
Connection conn = SHH2Util.openConnection(host,userName,passWord);;
String url = null;
try {
//获取文件流
SCPClient scpClient = conn.createSCPClient();
BufferedInputStream bufferedInputStream = scpClient.get(filePath);
//这里做其他操作 下载本地 上传OSS存储服务之类的
//文件上传阿里OSS存储
//url = OSSUploadUtils.upload(bufferedInputStream,fileName);
}catch (Exception e){
e.printStackTrace();
log.info(e.getMessage());
log.info("读取文件失败:" + fileName);
}finally {
if (null != conn) {
conn.close();
}
}
return url;
}
/**
* 删除服务器文件
* @param fileName 路径+文件名+文件后缀
* @return
*/
public static void removeSipFile(String fileName){
Connection conn = SHH2Util.openConnection(host,userName,passWord);
Session session = null;
try {
//执行命令
session = conn.openSession();
//执行删除命令
session.execCommand("rm -f "+fileName);
}catch (Exception e){
e.printStackTrace();
log.info(e.getMessage());
log.info("文件删除失败:" + fileName);
}finally {
if (null != session){
session.close();
}
if (null != conn) {
conn.close();
}
}
}
}