网站首页 > java教程 正文
- java程序远程linux服务器有两个框架分别是:jsch与ganymed-ssh2框架。
- 目前ganymed-ssh框架不维护了,同时不支持openssl的版本
- 下篇更新jsch的文章
一、导入相关依赖包
<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>262</version>
</dependency>
二、实现相关的工具类
/**
* 远程获取execl文件的工具类
*/
@Component
public class ScpClientUtil {
//日志记录工具
private static final Logger logger = LoggerFactory.getLogger(ScpClientUtil.class);
//远程ip
private static String ip;
//远程用户名
private static String userName;
//远程密码
private static String password;
//连接的端口
private static int port;
//设置编码格式
private static String charset;
@Value("${auth.ip}")
public void setIp(String ip) {
this.ip = ip;
}
@Value("${auth.userName}")
public void setUserName(String userName) {
this.userName = userName;
}
@Value("${auth.password}")
public void setPassword(String password) {
this.password = password;
}
@Value("${auth.port}")
public void setPort(String port) {
this.port = Integer.valueOf(port);
}
@Value("${file.charset}")
public void setEncoding(String charset) {
this.charset=charset;
}
/** 获取连接 */
public static Connection getConnect(String hostName, String username, String password, int port) {
Connection conn = new Connection(hostName, port);
try {
// 连接到主机
conn.connect();
// 使用用户名和密码校验
boolean isconn = conn.authenticateWithPassword(username, password);
if (!isconn) {
conn=null;
logger.info("用户名称或者是密码不正确");
} else {
logger.info("服务器连接成功.");
return conn;
}
} catch (Exception e) {
conn=null;
e.printStackTrace();
}
return conn;
}
/**
* 读取文件内容
*/
public static void getFileContent(Connection conn, String remotePath){
BufferedReader bufferedReader=null;
try {
SFTPv3Client sft = new SFTPv3Client(conn);
// 设置编码格式,可以获取到中文文件
sft.setCharset("GBk");
List<SFTPv3DirectoryEntry> list = sft.ls(remotePath);
SCPClient scpClient = conn.createSCPClient();
scpClient.setCharset("GBK");
String line;
for (int i = 0; i < list.size(); i++) {
String mkdir=list.get(i).filename;
//不允许访问根目录
if(!mkdir.startsWith("."))
{
List<SFTPv3DirectoryEntry> mkdirFiles = sft.ls(remotePath+mkdir+"/");
for(int k=0;k<mkdirFiles.size();k++){
//获取相关的文件名
String fileName=mkdirFiles.get(i).filename;
String localPath="---要读取的路径---"+fileName;
SCPInputStream in = scpClient.get(localPath.replace("\\", "//"));
bufferedReader = new BufferedReader(new InputStreamReader(in,ScpClientUtil.charset));
while((line=bufferedReader.readLine())!=null) {
//---------------------
//要执行的业务代码块
//---------------------
System.out.println(line);
}
}
}
}
}catch (Exception e) {
e.printStackTrace();
}finally {
if(bufferedReader!=null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/***创建连接服务器*/
public static Connection createConection() {
//不同平台存放数据
Connection conn = getConnect(ip, userName, password, port);
logger.info(ip);
logger.info(userName);
logger.info(password);
logger.info(String.valueOf(port));
return conn;
}
}
猜你喜欢
- 2024-11-19 Java 添加、读取和删除 Excel 批注
- 2024-11-19 Java 获取PDF文档中的图片的坐标信息
- 2024-11-19 Java如何获取一个文本文件的编码(格式)信息呢?
- 2024-11-19 Java 查找和高亮显示Word文本
- 2024-11-19 JVM Thread Dump 文件分析
- 2024-11-19 java web项目打成jar包运行后工具类无法读取模板文件的解决方法
- 2024-11-19 java获取到heapdump文件后,如何快速分析?
- 2024-11-19 Java 用注解实现通用功能-csv文件的读取为例
- 2024-11-19 从零学大数据之Java篇第二十五章:文件操作详解
- 2024-11-19 Java,通过文件获取MimeType的方式,文件扩展名获取ContentType
你 发表评论:
欢迎- 最近发表
-
- Java内存溢出紧急处理:10个必知的Linux命令快速定位OOM
- 面试常问的 25+ 个 Linux 命令(linux面试命令大全)
- Java堆外内存溢出紧急处理实战:Linux命令定位与Spring Boot解决
- java开发常用的Linux命令,高频的没你想象的多
- Java 应用 CPU 飙升?8 个 Linux 命令组合拳快速锁定异常线程
- Java 开发者线上问题排查常用的 15 个 Linux 命令
- Java程序员必备的Linux命令:让你的工作效率翻倍
- Java程序员必备的Linux命令全解析
- [超全整理] Java 程序员必备的 100 条 Linux 命令大全
- SAP ABAP资源导航(sap aatp)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)