Jsch报错:com.jcraft.jsch.JSchException: session is down
在写用自动任务对对账文件内容进行筛选,避免敏感信息泄露的过程中,报了一个很有意思的错误:
com.jcraft.jsch.JSchException: session is down……
利用jsch读取服务器文件,用流的形式过滤敏感信息,生成新的对账txt文件,采用的jsch是最新版本的包:
经查,sftp的访问路径要求权限必须是750或者是755,不能设置成777,我的访问路径是/home/tomcat/data,竟然都是777:
修改目录权限,连接成功,简单贴上读取服务器文件并筛选信息生成新对账文件的代码:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import com.ccb.ipsp.tools.DocDirect;
import com.ccb.ipsp.tools.PropertyUtils;
import com.ccb.ipsp.tools.SerialNumberTool;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;public class SshUtil {private static final Logger log = LoggerFactory.getLogger(SshUtil.class);public String ip = PropertyUtils.getValue("PUBLIC_LOGIN_IP");public Integer port = Integer.parseInt(PropertyUtils.getValue("PUBLIC_LOGIN_PORT"));public String username = PropertyUtils.getValue("PUBLIC_LOGIN_USER");public String password = PropertyUtils.getValue("PUBLIC_LOGIN_PASSWORD");public String schoolProjectId = PropertyUtils.getValue("SCHOOL_PROJECT_ID");/*** 利用JSch包实现SFTP下载、上传文件* * @param ip* 主机IP* @param user* 主机登陆用户名* @param psw* 主机登陆密码* @param port* 主机ssh2登陆端口,如果取默认值,传-1*/public void sshSftp() throws Exception {Session session = null;Channel channel = null;JSch jsch = new JSch();if (port <= 0) {// 连接服务器,采用默认端口session = jsch.getSession(username, ip);} else {// 采用指定的端口连接服务器session = jsch.getSession(username, ip, port);}// 如果服务器连接不上,则抛出异常if (session == null) {throw new Exception("session is null");}// 设置登陆主机的密码session.setPassword(password);// 设置密码// 设置第一次登陆的时候提示,可选值:(ask | yes | no)session.setConfig("StrictHostKeyChecking", "no");// 设置登陆超时时间session.connect(60000);try {// 创建sftp通信通道channel = session.openChannel("sftp");channel.connect(1000);ChannelSftp sftp = (ChannelSftp) channel;log.info("连接成功--");// 进入服务器指定的文件夹sftp.cd(PropertyUtils.getValue("PUBLIC_FILE_PATH"));/** // 列出服务器指定的文件列表 * Vector v = sftp.ls("*.dat"); * for (int i = 0; i < v.size(); i++) {* String fileName = String.valueOf(v.get(i));* log.info("第" + i + "个对账文件是:" + fileName); }*/// LCS_A3011_PAYMENT_FLOW.dat为支付流水String path = PropertyUtils.getValue("PUBLIC_FILE_PATH") + "/LCS_A3011_PAYMENT_FLOW.dat";System.err.println("进入支付对账文件路径=====" + path);String txtPayName = new DocDirect().returnDoc() + File.separator + PropertyUtils.getValue("SCHOOL_PAY_NAME");InputStream intstream = sftp.get(path); // 字节流InputStreamReader isr = new InputStreamReader(intstream); // 字符流BufferedReader br = new BufferedReader(isr); // 缓冲流try {LineNumberReader reader = new LineNumberReader(br);String txt = null;while ((txt = reader.readLine()) != null) {if (txt.contains("213135003")) {System.out.println("====\n" + txt);appendMethod(txtPayName, txt);}}log.info("支付数据筛选完毕!");reader.close();br.close();} catch (FileNotFoundException e) {e.printStackTrace();}// LCS_A3011_ITEM_FLOW.dat为明细流水String pathList = PropertyUtils.getValue("PUBLIC_FILE_PATH") + "/LCS_A3011_ITEM_FLOW.dat";System.err.println("进入明细对账文件路径=====" + pathList);String txtPayNameList = new DocDirect().returnDoc() + File.separator + PropertyUtils.getValue("SCHOOL_PAY_LIST_NAME");InputStream intstreamList = sftp.get(pathList); // 字节流InputStreamReader isrList = new InputStreamReader(intstreamList); // 字符流BufferedReader brList = new BufferedReader(isrList); // 缓冲流try {LineNumberReader reader = new LineNumberReader(brList);String txt = null;while ((txt = reader.readLine()) != null) {if (txt.contains("213135003")) {System.out.println("明细-----\n" + txt);appendMethod(txtPayNameList, txt);}}log.info("明细数据筛选完毕!");reader.close();br.close();} catch (FileNotFoundException e) {e.printStackTrace();}} catch (Exception e) {e.printStackTrace();} finally {session.disconnect();channel.disconnect();}}// 追加写入public static void appendMethod(String fileName, String content) {try {// 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件FileWriter writer = new FileWriter(fileName, true);writer.write(content + "\n");writer.close();} catch (IOException e) {e.printStackTrace();}}// 对账文件筛选留存public void DownCheckFile() {SshUtil sshUtil = new SshUtil();try {sshUtil.sshSftp();} catch (Exception e) {e.printStackTrace();}log.info(SerialNumberTool.ConcreteDate() + "日对账文件筛选留存成功");}public static void main(String args[]) {}}
Jsch报错:com.jcraft.jsch.JSchException: session is down相关推荐
- jsch报错4: Failure
在使用jsch进行sftp上传文件时出现如下异常 报错信息如下: 4: Failureat com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSf ...
- Kali安装fluxion报错:Aborted, xterm test session failed的解决办法
说说我自己对出现这个问题的看法: 通过多次的尝试 发现 1.由于我的网络问题 我是用的校园网 不太稳定 (建议安装的时候使用流量+热点) 2.安装过程中自行终止(自己按了ctr+c)(所以安装过程 ...
- ch.ethz.ssh2.Session和com.jcraft.jsch.Session
通过Jsch连接 step 1引入jar包 <!-- jcraft包 --> <dependency> <groupId>c ...
- Java中com.jcraft.jsch.JSch讲解
JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到 ...
- 【Azkaban报错解决】FAILED SemanticException Failed to get a spark session
问题描述: ods_to_dwd_log报以下错误 ods_to_dim_db报一下错误 可以看出都是相同报错,无法创建spark事务 Logging initialized using config ...
- 解决JSCH的sftp连接时出现的com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stre
问题描述 如题,今天遇到个问题,使用JSCH的jsch-0.1.54.jar实现的sftp在连接目标服务器时报com.jcraft.jsch.JSchException: Session.connec ...
- java auth fail_com.jcraft.jsch.JSchException: Auth fail
背景 服务器信息: 服务器A:10.102.110.1 服务器B:10.102.110.2 需要从服务器A通过Sftp传输文件到服务器B. 应用项目中有一个功能,要通个关Sftp进行日志文件的传输,在 ...
- com.jcraft.jsch.JSchException: Auth fail
背景 服务器信息: 服务器A:10.102.110.1 服务器B:10.102.110.2 需要从服务器A通过Sftp传输文件到服务器B. 应用项目中有一个功能,要通个关Sftp进行日志文件的传输,在 ...
- jsch.addIdentity invalid key报错问题
jsch.addIdentity报错问题 JDK1.8 jsch 0.1.52 报错信息 :privatekey: invalid key - 一开始网上搜罗的信息大都是,jsch版本太低,需要对应使 ...
最新文章
- 开发日记-20190731 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 17
- PAFF 和MBAFF
- Spring MVC 4快速入门Maven原型已改进
- 被嫌弃的互联网的 “一生”(上)
- c#日期转换周几_C#获取每个年,月,周的起始日期和结束日期的方法
- ASP.NET----实现点击按钮或链接弹出登录对话框
- RFM 客户价值分析
- java 水晶按钮_报告水晶报告没有复制按钮
- 监听电源键的单击或长按事件
- Android应用推广渠道分享
- 11月20日云栖精选夜读:围观阿里总部:边喝茶边搞技术是一种怎样的体验?
- OCR文字识别软件FineReader系列产品双十一特惠!
- 智商情商哪个重要_情商和智商 哪个对孩子更重要?
- 网站选择关键词需要遵循哪些原则呢?
- mysql自定义函数示例代码,以及属性介绍
- python中file方法
- C语言中printf打印形式(%02X, %2X, %-2X, %.nf, %m.nf, %e, %m.ne, %2d, %-2d, %02d, %.2d)
- 拍照已经成为我们手机中必备的功能之一,但是我们很多人都无法使用手机原相机拍出好看的图片,这是为什么呢?
- python读取文件,并指定跳过的行数
- 09永恒之蓝与永恒之黑的复现