Java Jsch可以执行第三方linux shell吗?

Java Jsch可以执行第三方linux shell吗?,java,jsch,Java,Jsch,我已经成功地使用jsch来执行linux系统shell,比如ls;普华永道。现在我想知道Jsch是否可以执行第三方linux shell,比如clish?我不明白为什么Jsch可以拒绝执行命令。在我的测试中,任何命令只有cli命令,而不是XWindow!工作完美。我甚至可以用丑陋的输出启动vi,当然…,正确地退出它并用^D从shell注销 我能确定的唯一问题是时间。Jsch与其他bedirectionnal工具类似:它允许您写入和读取,但您必须等待命令完成其输出才能读取,当然还要关闭通道。如果没

我已经成功地使用jsch来执行linux系统shell,比如ls;普华永道。现在我想知道Jsch是否可以执行第三方linux shell,比如clish?

我不明白为什么Jsch可以拒绝执行命令。在我的测试中,任何命令只有cli命令,而不是XWindow!工作完美。我甚至可以用丑陋的输出启动vi,当然…,正确地退出它并用^D从shell注销

我能确定的唯一问题是时间。Jsch与其他bedirectionnal工具类似:它允许您写入和读取,但您必须等待命令完成其输出才能读取,当然还要关闭通道。如果没有,您将发现一个空输出或只有登录横幅,并在服务器上的命令开始之前关闭通信

这可以解释为什么将inputStream连接到System.in时它会工作,因为这样,您就可以等待一个命令的输出键入以下内容


您可以尝试在代码中添加延迟来确认它。

您尝试过了吗?发生了什么?我尝试了clish命令,但仅服务器反馈无法启动clish。但是我在linux终端上执行这个命令,它工作得很好。也许你可以尝试使用clish的完整路径,因为jsch不会加载你的配置文件或bashrc文件;source~/.bash_配置文件;在命令前面,但仍然不工作。如果使用陈词滥调的完整路径,会发生什么?在Linux终端中键入clish并给出它。顺便问一下,你的sshd是什么?我添加了一些延迟,比如Timer=newtimer;timer.schedulewmytask,10002000;在频道之后。连接。但结果仍然是无法启动clish只是一个想法,当您使用System.in作为输入时,如何准确地键入clish命令?使用所有的“和\?否”,当我使用System.in作为输入时,我直接在控制台中键入命令clish-e-w'global conf view'-c'nest mate'ignore。现在我能理解了。。。事实上,shell通道中的Jsch只是打开了一个ssh通信,所有这些都和您直接在终端中键入的内容完全一样。尝试删除\并写入…=new ByteArrayInputStreamclish-e-w'global conf view'-c'nest mate'\n.getBytes;事实上,如果我删除\,结果仍然是无法启动陈词滥调。。。。