读取远程服务器linux指定目录下文本内容(工具类)
package com.aa.dataadmin.common.utils; import cn.hutool.extra.ssh.JschUtil;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.xy.common.exception.base.BaseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Properties; /**
* 读取服务器文件内容
*
* @author **
* @date 2022-**-**
*/
public class PythonFileUtil { private Logger log = LoggerFactory.getLogger(getClass()); private static Session session; /**
* 方法描述: 连接到服务器
*
*/
public static void connect(String ipUrl, int pythonPort, String username, String password) throws JSchException {
// 创建JSch对象
JSch jsch = new JSch();
// 根据用户名,主机ip,端口获取一个Session对象
session = jsch.getSession(username, ipUrl, pythonPort);
// 设置密码
session.setPassword(password);
// 设置timeout时间
session.setTimeout(20000);
// 为Session对象设置properties
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
// 通过Session建立链接
session.connect();
} /**
* 读取Linux服务器某路径下文件
*
* @param ipUrl ip地址
* @param username 用户名
* @param password 密码
* @param path 文件路径
* @param fileName 文件名(带后缀)
* @return
* @throws IOException
*/
public String messageToPythonFile(String ipUrl, int pythonPort, String username, String password, String path, String fileName) throws Exception { try {
connect(pythonUrl, pythonPort, username, password);
} catch (JSchException e) {
e.printStackTrace();
log.info(e.getMessage());
throw new BaseException("连接远程服务异常");
}
// 打开SFTP通道
ChannelSftp channelSftp = null;
String fileInfo = "";
try {
channelSftp = (ChannelSftp) session.openChannel("sftp");
// 建立SFTP通道的连接
channelSftp.connect();
} catch (Exception e) {
e.printStackTrace();
log.info(e.getMessage());
throw new BaseException("建立远程通道链接异常");
} try {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
channelSftp.get(physicsUrl + "/" + fileName, outputStream);
fileInfo = new String(outputStream.toByteArray()); // 关闭通道
JschUtil.close(channelSftp);
JschUtil.close(session);
} catch (Exception e) {
e.printStackTrace();
log.info(e.getMessage());
throw new BaseException("目录/文件不存在");
}
//得到的结果转换‘换行\n’,‘缩进\t’字符,返回到页面展示
return fileInfo.replaceAll("\t"," ").replaceAll("(\\n\\r|\\n|\\r\\n)","<br/>");
}
}
读取远程服务器linux指定目录下文本内容(工具类)的更多相关文章
- Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte
File 类 用来将文件或者文件夹封装成对象 方便对文件与文件夹进行操作. File对象可以作为参数传递给流的构造函数 流只用操作数据,而封装数据的文件只能用File类 File类常见方法: 1.创建 ...
- python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小
本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏. 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小,类似Windows如下功能: 模块介绍: from ftplib import F ...
- socket实现两台FTP服务器指定目录下的文件转移(不依赖第三方jar包)
通过socket实现两台FTP服务器指定目录下的文件转移,其中包含了基础了ftp文件列表显示.上传和下载.这里仅供学习用,需掌握的点有socket.ftp命令.文件流读取转换等 完整代码如下: Ftp ...
- linux复制指定目录下的全部文件到另一个目录中
linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...
- Java 读取指定目录下的文件名和目录名
需求:读取指定目录下的文件名和目录名 实现如下: package com.test.common.util; import java.io.File; public class ReadFile { ...
- iOS案例:读取指定目录下的文件列表
// // main.m // 读取指定目录下的文件列表 // // Created by Apple on 15/11/24. // Copyright © 2015年 Apple. All rig ...
- linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹
linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...
- Python--通过索引excel表将文件进行文件夹分类的脚本+读取指定目录下所有文件名的脚本
1.通过索引excel表将文件进行文件夹分类的脚本,此脚本由于将ip和id对应并生成对应id的文件夹将文件进行分类,也可以任意规定表格内容,通过vul_sc_ip.txt和xlsx文件进行索引. # ...
- linux find-在指定目录下查找文件
推荐:更多Linux 文件查找和比较 命令关注:linux命令大全 find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find ...
- linux --> 删除指定目录下所有文件
删除指定目录下所有文件 代码样例: ///////////////////////////////////////////////////// //Name: DeleteFile //Purpose ...
随机推荐
- SAP 布局编辑器无法使用问题处理
因一些事情,公司将正式系统的数据拷贝到了开发机,后来在开发中用到了布局编辑器,发现打不开且会报错RFC callback call rejected by whitelist 这个是因为正式机和开发机 ...
- ftp服务无法覆盖同名文件
1.linux修改/etc/pure-ftpd/pure-ftpd.conf的AutoRename yes 重启ftp服务 2.windows server修改 选中ftp站点,选择右侧高级设置,选 ...
- spider_requests库简单ip代理
"""使用requests 设置ip代理"""import requestsdef func(): url = 'http://ip.273 ...
- heap 算法函数
这一系列函数是在做 这道题 时发现的 这道题空间卡的很死,是不能用数组存下所有数字进行快排的 后来又尝试用 \(multiset\) 优化空间,发现不行,可能是 \(multiset\) 还有结构性存 ...
- source Insight 的常用设置
1. 去除^M 的显示 "Options->Preferences->Files", 设置"Default File Format" to &quo ...
- linux命令关机和重启命令及文件查找管道符用法linux grep
关机和重启命令 Shutdown Reboot Halt poweroff grep和管道符 昨天的时候 leader 给我出了道问题: 找出文件夹下包含 "aaa" 同时不包含 ...
- TypeError: Cannot read property ‘$options‘ of undefined vue
vue弹框页面 <el-form :model="ruleForm" ref="ruleForm" label-width="100px&quo ...
- UGUI让自动布局下的子物体不接受布局(LayoutGroup)影响
在子物体上添加Layout Element组件 看到这个组件上有个Ignore Layout,这个就是忽视布局,把它勾上就可以忽视父级对它的布局了. 转自:https://zhuanlan.zhihu ...
- pytest之conftest.py
一.conftest.py的特点 1.可以跨.py文件调用,有多个.py文件调用时,可让conftest.py只调用了一次fixture,或调用多次fixture 2.conftest.py与运行的用 ...
- centos7 硬盘扩容
参考 linux系统下,新加硬盘并把现有的/home目录扩容 最后加的容量在/目录 而不是在/home目录,而我本来把/home目录独立挂载在一个分区了 创建逻辑卷.可用使用命令 pvcreate / ...