From bea732d74943dee39982ce12931e1fdbc43412d1 Mon Sep 17 00:00:00 2001 From: xyli Date: Fri, 3 Mar 2023 15:07:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B5=8B=E8=AF=95=E7=B1=BBTe?= =?UTF-8?q?stJschExec=20=20exec=E8=AF=BB=E5=8F=96=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/TestJschExec.java | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/test/java/TestJschExec.java b/src/test/java/TestJschExec.java index 87bc585..a732d7f 100644 --- a/src/test/java/TestJschExec.java +++ b/src/test/java/TestJschExec.java @@ -82,7 +82,49 @@ public class TestJschExec { } } + @Test + public void test() throws IOException, JSchException { + Charset charset = CharsetUtil.CHARSET_UTF_8; + Session session = JschUtil.createSession("192.168.1.8", 22, "root", "123456+"); + ChannelExec channel = (ChannelExec) JschUtil.createChannel(session, ChannelType.EXEC); + // 添加环境变量 + channel.setCommand(cmd); + InputStream inputStream = channel.getInputStream(); + InputStream errStream = channel.getErrStream(); + channel.connect((int) TimeUnit.SECONDS.toMillis(5)); + // + SyncFinisher syncFinisher = new SyncFinisher(2); + final String[] error = new String[1]; + final String[] result = new String[1]; + // + syncFinisher.addRepeatWorker(() -> { + try { + error[0] = IoUtil.read(errStream, charset); + } catch (Exception e) { + e.printStackTrace(); + if (!StrUtil.contains(e.getMessage(), "Pipe closed")) { + DefaultSystemLog.getLog().error("读取 exec err 流发生异常", e); + error[0] = "读取 exec err 流发生异常" + e.getMessage(); + } + } finally { + syncFinisher.stop(); + } + }).addRepeatWorker(() -> { + try { + result[0] = IoUtil.read(inputStream, charset); + } catch (Exception e) { + e.printStackTrace(); + if (!StrUtil.contains(e.getMessage(), "Pipe closed")) { + DefaultSystemLog.getLog().error("读取 exec 流发生异常", e); + result[0] = "读取 exec 流发生异常" + e.getMessage(); + } + } finally { + syncFinisher.stop(); + } + }).start(); + System.out.println(result[0] + " " + error[0]); + } -- Gitee