当前位置: 首页 > 面试题库 >

如何在字符串中获取jsch shell命令输出

屠晟睿
2023-03-14
问题内容

我正在使用JSCH -SSH库在“ shell”通道中执行命令,但找不到找到两种方法的方法:

1)如何查找命令是否在远程unix box上完全执行?

2)如何在String中捕获命令输出,而不是在System.out控制台上打印它?

下面是我的代码片段,可以在system.out上显示shell命令输出

注意:我不想使用“ exec”通道,因为它为每个命令启动一个新进程,并且不记得已导出的“ session”变量。我必须使用“ shell”通道。

以下是我的代码段。感谢您的帮助。

try{

  String commandToRun = "ls /tmp/*.log \n";
  if(channel.isClosed())
      channel=session.openChannel("shell");
  byte[] bytes = commandToRun.getBytes();
  ByteArrayInputStream bais=new ByteArrayInputStream(bytes);
  channel.setInputStream(bais);
  InputStream ins=channel.getInputStream();
  channel.connect();
  channel.setOutputStream(System.out);//This prints on console. Need 2 capture in String somehow?

  //in-efficient way to allow command to execute completely on remote Unix machine
  //DO NOT know a better way, to know when command is executed completely
  Thread.sleep(5000L);
}
 catch(Exception e){
  System.out.println("Exception  in executeCommand() --->"+ e.getMessage());
  e.printStackTrace();
}

问题答案:

对于2)你可以使用 ByteArrayOutputStream

final ByteArrayOutputStream baos = new ByteArrayOutputStream();
channel.setOutputStream(baos);

然后从创建新字符串 new String(baos.toByteArray())

对于1,您是否尝试在命令末尾使用2>&1?

String commandToRun = "ls /tmp/*.log 2>&1 \n";


 类似资料:
  • 我使用JSCH-SSH库在“shell”通道中执行命令,但无法找到一种方法来做两件事:- 1)如何查找命令是否在远程unix box上完全执行? 2)如何在String中捕获命令输出,而不是在System.out控制台上打印? 下面是我的代码片段,它可以很好地在系统上显示shell命令输出。出来 注意:我不想使用“exec”通道,因为它为每个命令启动一个新进程,并且不记得导出的“session”变

  • 问题内容: 如何获取命令提示符的输出,这意味着我已经打开了这样的命令提示符。 我无法获得像这样的cmd输出 那么如何获得命令提示符输出? 问题答案: 这不是Java问题。基本上,您正在执行的是Java(Java Main Process A),然后从中启动另一个进程(Windows CMD B)。很好,您可以在Java(A)中获得此过程(B)的输入/输出流。但是,此过程(B)使用其自己的标准输入/

  • 问题内容: 在python中,我可以使用os或subprocess运行一些系统命令。问题是我无法以字符串形式获取输出。例如: 我有一个没有功能check_out的较旧版本的子流程,并且我希望有一个不需要更新该模块的解决方案,因为我的代码将在没有完全管理员权限的服务器上运行。 这个问题似乎微不足道,但我找不到微不足道的解决方案 问题答案: 用途: 执行此操作的较新方法(> python 2.6)是使

  • 问题内容: 有没有一种方法可以在Python中对字符串进行子字符串化,以从第三个字符到字符串末尾获取新的字符串? 也许喜欢吗? 如果离开第二部分意味着“直到最后”,而如果离开第一部分,它是否从头开始? 问题答案: Python称这个概念为“切片”,它不仅适用于字符串,还适用于更多的领域。看看这里的一个全面的介绍。

  • 问题内容: 如何将(度)字符转换为字符串? 问题答案: 将此行放在源代码的顶部 如果您的编辑器使用其他编码,请替换为utf-8 然后,您可以直接在源代码中包含utf-8字符

  • 问题内容: 我正在尝试读取AT命令的结果(执行该命令以从控制台对GSM调制解调器执行各种操作)。我已经看到并使用Java OuputStream类成功进行了测试,以将AT命令的结果作为输出流获取,但是我要做的不是将结果作为输出流获取,而是获取到类中的变量(目前为String)中。 如果有可能喜欢 效果很好,怎么可能做这样的事情 我正在以这种方式尝试 但是为了获得结果,我想要像这样的字符串来获取at