从string获得命令(密码),并将其设置为InputStream到Java(JSCH)中的Unix服务器

几乎类似于这个话题,但在这里我不是一个超级用户使用–stdin。

所以我find了另外一个方法,我会在后台打开一个“shell”,并通过InputStream通过一个String给shell提供input

我做了如下代码:

 String s = "cd bin\n"; byte bb[] = s.getBytes(); InputStream intt = new ByteArrayInputStream(bb); channel.setInputStream(new FilterInputStream(intt) { public int read(byte[] b, int off, int len) throws IOException { return in.read(b, off, (len > 1024 ? 1024 : len)); } }); 

现在,当我只想执行一个命令,但是我想给出多个命令时,这是完美的。

有什么build议么?

问候,

依禅

Solutions Collecting From Web of "从string获得命令(密码),并将其设置为InputStream到Java(JSCH)中的Unix服务器"

我发现一个问题的解决方案,我问,不知道是否有一个完整的证明解决方案,因为我测试了有限的一段时间,我做了它的野兽的方式,我可以。

 channel = session.openChannel("exec"); ((ChannelExec) channel).setCommand(command); ((ChannelExec) channel).setPty(true); 

在命令字符串中

 String command = "(echo old_password; echo new_password; echo new_password) | passwd username"; 

或者如果不是超级用户那么,

 String command = "(echo old_password; echo new_password; echo new_password) | passwd" 

这就对了 ;)

问候,

ICR