读取远程服务器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 ...
随机推荐
- Huawei-2488H-V5服务器基础配置与系统安装
0x00 前言简述 描述: 由于最近公司来了一批华为的服务器以及存储,来的时候真的感到非常意外因为从中标到接货超过了1个半月,其间还因为各种事进行推延: 在现场实施人员完成服务器上架以及测试后,由于业 ...
- 上传镜像到harbor
https://blog.csdn.net/weixin_45335305/article/details/123817541
- linux挂载文件服务器
smbclient -L //192.168.1.1/ -U administrator //直接挂载 使用下面这条命令就行 sudo mount -t cifs -o username=文件服务器账 ...
- mongodb地理位置坐标加了索引,操作时报错 Location object expected, location array not in correct format
别犹豫了,将坐标中的数据改为数字类型即可,如: location:[113.45,34,191]
- shell_Day02
虽然差了不少天,但的确是第......一天 history 查看历史命令记录 !命令序号 查看命令并执行 -c 清空 关于命令历史的文件 关于命令历史的变量(环境变量) 命令补全 tab:制表符 \t ...
- 使用Wireshark完成实验1
用来观察协议执行实体之间交换的报文的基本工具被称为分组嗅探器(packet sniffer),一个分组嗅探器被动地拷贝(嗅探)计算机发送和接受的报文,也能显示出这些被捕获报文的各个协议字段的内容.Wi ...
- noi 1.1 5 输出保留12位小数的浮点数
描述 读入一个双精度浮点数,保留12位小数,输出这个浮点数. 输入 只有一行,一个双精度浮点数. 输出 也只有一行,保留12位小数的浮点数. 样例输入 3.1415926535798932 样例输出 ...
- python 操作MongoDB pymongo
python操作MongoDB 1.安装pymongo pip install pymongo 2.连接数据库 启动mongodb服务: 包含mongod.exe文件夹bin :shift+鼠标右键, ...
- 操作系统|03.Linux基础(2)
Linux基础(二) 3.vim编辑器 命令模式:控制光标移动,对文本进行删除.复制.粘贴等工作.编辑模式:正常的文本录入.末行模式:保存.退出和设置编辑环境. 3.1命令模式常用命令 -r:恢复系统 ...
- Vue实现组件化的基本思路
Vue.js(以下简称Vue)是时下流行的前端开发库,一般搭配其插件Vue-Router,Vuex一起使用,行业中称为Vue全家桶. Vue使用了MVVM的理念,将表现层(DOM)和数据层进行了分离, ...