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","&nbsp;").replaceAll("(\\n\\r|\\n|\\r\\n)","<br/>");
}
}

  

读取远程服务器linux指定目录下文本内容(工具类)的更多相关文章

  1. Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte

    File 类 用来将文件或者文件夹封装成对象 方便对文件与文件夹进行操作. File对象可以作为参数传递给流的构造函数 流只用操作数据,而封装数据的文件只能用File类 File类常见方法: 1.创建 ...

  2. python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小

    本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏. 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小,类似Windows如下功能: 模块介绍: from ftplib import F ...

  3. socket实现两台FTP服务器指定目录下的文件转移(不依赖第三方jar包)

    通过socket实现两台FTP服务器指定目录下的文件转移,其中包含了基础了ftp文件列表显示.上传和下载.这里仅供学习用,需掌握的点有socket.ftp命令.文件流读取转换等 完整代码如下: Ftp ...

  4. linux复制指定目录下的全部文件到另一个目录中

    linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...

  5. Java 读取指定目录下的文件名和目录名

    需求:读取指定目录下的文件名和目录名 实现如下: package com.test.common.util; import java.io.File; public class ReadFile { ...

  6. iOS案例:读取指定目录下的文件列表

    // // main.m // 读取指定目录下的文件列表 // // Created by Apple on 15/11/24. // Copyright © 2015年 Apple. All rig ...

  7. linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹

    linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...

  8. Python--通过索引excel表将文件进行文件夹分类的脚本+读取指定目录下所有文件名的脚本

    1.通过索引excel表将文件进行文件夹分类的脚本,此脚本由于将ip和id对应并生成对应id的文件夹将文件进行分类,也可以任意规定表格内容,通过vul_sc_ip.txt和xlsx文件进行索引. # ...

  9. linux find-在指定目录下查找文件

    推荐:更多Linux 文件查找和比较 命令关注:linux命令大全 find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find ...

  10. linux --> 删除指定目录下所有文件

    删除指定目录下所有文件 代码样例: ///////////////////////////////////////////////////// //Name: DeleteFile //Purpose ...

随机推荐

  1. 学习canvas的vscode提示问题

    在代码中加入/** @type {HTMLCanvasElement} */ 即可 1 <script> 2 /** @type {HTMLCanvasElement} */ 3 let ...

  2. unity Dotween Path 设置路径平滑加旋转平滑

    Waiter.transform.DOPath(list.ToArray(), 3f * (index / 2.0f + 1.0f), PathType.CatmullRom).SetLookAt(0 ...

  3. hadoop克隆三台虚拟机安装JDK和hadoop并配置环境变量

    首先将模板虚拟机关机,进行对模板虚拟机的克隆. 选择完整克隆 克隆三台虚拟机. 注意虚拟机的移除与删除 打开hadoop102,修改ip地址与hostname 切换至root用户,或以root用户登录 ...

  4. python基于百度unit实现语音识别与语音交互

    一.百度Unit新建机器人 网址:https://ai.baidu.com/tech/speech/asr: 1.新建机器人并添加预置技能步骤 (1).新建机器人(添加预置技能),并填写机器人具体信息 ...

  5. PostScript语言教程(六、图形变换)

    6.1.坐标系变换 POSTSCRIPT图形操作是在一个坐标系中,这个坐标系被称为用户坐标系或用户空间,该坐标系独立于任何物理设备.POSTSCRIPT在用户空间中进行绘制,并将结果传输到特定的打印机 ...

  6. 替代学习物联网-云服务-03腾讯云MQTT

    1.登录(利用微信) https://console.cloud.tencent.com/iothub 2.新建产品 3.添加设备 4.设备详细参数 域名IP固定: iotcloud-mqtt.gz. ...

  7. D. Steps to One

    题意 初始有一个空数组\(a\),接下来每次操作会这么做: 在\([1,n]\)中选择一个数,将其拼接在数组\(a\)后. 计算数组\(a\)的\(\gcd\). 如果结果是\(1\),退出. 否则, ...

  8. Python的入门学习之 Day 7——from“夜曲编程”

    Day 7 time: 2021.8.4. 今天主要将"if-else"再扩展, 得到"if-elif-else"模型.它与"if-else" ...

  9. Arduino开发ESP8266——安装与配置ESP8266开发板

    一.安装Arduino 1.下载安装包:点击打开 2.安装:直接点击下一步直至安装完成.如下图所示: 二.下载ESP8266开发板库: 在这面填写ESP8266开发板地址:http://arduino ...

  10. PHP Redis 基本命令

    连接到 redis 服务 //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379);//查看服务是否运行 ...